Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> isEMED [in template "20102#20129#438394" at line 4097, 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 4097, 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<style>
10
11 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card {
12 background: white;
13 width: 100%;
14 padding: 32px 52px;
15 box-shadow: 2px 5px 12px #00000040;
16 border-radius: 20px;
17 display: flex;
18 flex-wrap: nowrap;
19 justify-content: space-between;
20 align-items: center;
21 }
22
23 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-icone {
24 max-width: 100%;
25 height: 72px;
26 margin-bottom: 10px;
27 }
28
29 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section {
30 background: #472247;
31 border-top: 18px solid #792F7A;
32 text-align: center;
33 padding-bottom: 60px;
34 }
35
36 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white::after {
37
38
39 display: none;
40
41
42 }
43
44 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white {
45 color: white;
46 font-size: 44px !important;
47 margin-bottom: 32px !important;
48 text-align:unset;
49 }
50
51 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-title {
52 font-size: 28px;
53 color: #B767C2;
54 font-weight: bold;
55 line-height: 28px;
56 margin: 0;
57 margin-bottom:.5rem;
58 }
59
60
61.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-credit-card::after {
62
63 font-size: 18px;
64
65}
66
67.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-boleto::after {
68
69 font-size: 18px;
70
71}
72
73.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__header {
74 align-items:center;
75 color:#454F63;
76}
77
78.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__btn-close::after {
79 font-family: "Font Awesome 6 Pro";
80 font-weight: normal;
81 content: "\f00d";
82 font-style: normal;
83 font-size:30px;
84 cursor: pointer;
85}
86
87.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__body {
88
89 padding:0 15px;
90}
91
92.ssp-card-modal-forma-pagamento__tipos-content p {
93
94 color: #454F63!important;
95 font-size: 14px!important;
96}
97
98.ssp-card-modal-forma-pagamento__tipos-content strong {
99
100 font-weight: bold!important;
101}
102
103.txt-desconto-oito{
104
105 font-weight: 600!important;
106 border: 1px solid #f2f2f2;
107 border-right: 0;
108 border-left: 0;
109 padding: 10px 0;
110}
111
112.next-mobile{
113 color: white;
114 display: flex;
115 align-items: center;
116 text-decoration: none!important;
117}
118
119.next-mobile:hover{
120 color: white;
121 font-weight: normal!important;
122}
123
124.next-mobile::before{
125 font-family: "Montserrat", sans-serif;
126 content: "Próxima";
127 font-size: 14px;
128 font-weight: 600;
129 display: block;
130 margin-right: 9px;
131 color: white;
132}
133
134.next-mobile.slick-arrow.slick-disabled{
135 opacity: 0.4;
136}
137
138
139/* Prev Mobile button */
140
141
142.prev-mobile{
143 color: white;
144 display: flex;
145 align-items: center;
146 text-decoration: none;
147 text-decoration: none!important;
148}
149
150.prev-mobile:hover{
151 color: white;
152 font-weight: normal!important;
153}
154
155.prev-mobile::after{
156 font-family: "Montserrat", sans-serif;
157 content: "Anterior";
158 font-weight: 600;
159 font-size: 14px;
160 display: block;
161 margin-left: 9px;
162 color: white;
163}
164
165.prev-mobile.slick-arrow.slick-disabled{
166 opacity: 0.4;
167}
168
169
170.icon-ao-vivo{
171 font-size: 15px!important;
172 margin: 0 3px;
173}
174
175.ssp-card-detalhe-curso__tag-ao-vivo{
176 font-family: "Montserrat";
177 font-size: 19px;
178 letter-spacing: 0px;
179 color: #F77A3B;
180}
181
182.selecione-unidade-title-custom{
183
184 width:100%!important;
185
186}
187
188.recalcular{
189 background:#F6921E!important;
190 border: solid 1px #F6921E!important;
191}
192
193.ssp-card-detalhe-curso__description{
194
195 font-family: "Montserrat";
196 max-width: 800px;
197 font-size: 20px;
198 font-weight: 500;
199 font-stretch: normal;
200 font-style: normal;
201 line-height: 1.23;
202 letter-spacing: normal;
203 margin: 10px 0;
204 text-align: left;
205 color: #4f596f;
206
207}
208
209/* nova formatação para registro de interesse */
210.ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content {
211 display: flex;
212 flex-wrap: nowrap;
213 justify-content: center;
214 align-items: center;
215 padding: 10px 0;
216}
217
218/* Novas tags para formato de curso */
219
220.ssp-card-detalhe-curso__tag-formato{
221
222 font-size:18px;
223 font-weight:600;
224
225}
226
227.icon-formato{
228 margin-right:7px;
229}
230
231.online-aovivo{
232 position:relative;
233
234}
235
236.icon-small-wifi {
237 font-size: 13px;
238 position: absolute;
239 left: -12px;
240 top: -5px;
241}
242
243.ssp-desconto-2022 .modal-extensao_txteconomiza {
244 font-size: 14px !important;
245 font-weight: 100 !important;
246}
247.ssp-desconto-2022 .ssp-card-oferta-curso__desconto-content .ssp-card-oferta-curso__valor-desconto {
248 font-weight: 100 !important;
249}
250.ssp-desconto-2022 .modal-extensao-btn-conheca {
251 border: 1px solid #474F61 !important;
252 border-radius: 4px;
253 color: #474F61 !important;
254 font-size: 15px;
255 height: 50px;
256 margin-left: 0;
257 display: flex;
258 align-items: center;
259 justify-content: center;
260}
261
262.ssp-card-modal-forma-pagamento.ssp-desconto-2022 {
263 color: #454F63;
264}
265.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 {
266 font-size: 22px !important;
267}
268.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 span {
269 font-size: 13px !important;
270}
271.ssp-desconto-2022 span {
272 padding: 0 !important;
273}
274
275.ssp:not(.liferay-instance) .ssp-card-registro-interesse__select {
276 appearance: none !important;
277 -webkit-appearance: none !important;
278 -moz-appearance: none !important;
279
280 background-size: 25px 25px !important;
281 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBQcm8gNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik0xODcuOCAyNjQuNUw0MSA0MTIuNWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDQuMiAzOTIuN2MtNC43LTQuNy00LjctMTIuMyAwLTE3TDEyMi43IDI1NiA0LjIgMTM2LjNjLTQuNy00LjctNC43LTEyLjMgMC0xN0wyNCA5OS41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwxNDYuOCAxNDhjNC43IDQuNyA0LjcgMTIuMyAwIDE3eiIvPjwvc3ZnPg==);
282 background-repeat: no-repeat !important;
283 background-position-x: 99% !important;
284 background-position-y: 50% !important;
285}
286
287@media only screen and (max-width: 768px){
288
289 .ssp-card-detalhe-curso__tag-ao-vivo{
290 font-size: 14px;
291 display: none;
292 }
293 .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content {
294
295 flex-wrap: wrap!important;
296
297}
298.ssp-card-modal-forma-pagamento__tipos-content p {
299
300 font-size: 12px!important;
301}
302
303
304 .ssp:not(.liferay-instance) .ssp-section-selecione-unidade {
305 padding: 30px 0!important;
306 padding-bottom: 30px !important;
307 background-color: #2a2e43;
308 }
309
310 .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__title {
311 padding-bottom: 1.25rem !important;
312 }
313
314 .selecione-unidade-title-custom{
315 width:100%!important;
316
317 }
318
319 .ssp-card-detalhe-curso__description{
320 width: 100%;
321 font-size: 15px;
322
323 }
324 .ssp-como-me-matricular__passo-passo-card {
325 padding: 30px 24px!important;
326
327 }
328
329 .emed-select-group {
330 box-shadow: none!important;
331 border: none !important;
332 border-bottom: 1px solid #6E6E6E!important;
333 border-radius: 0 !important;
334 padding: 0 !important;
335 margin: 1rem 0 !important;
336 }
337
338 .emed .ssp-card-registro-interesse__title-modal{
339 font-size: 20px!important;
340 }
341 .emed .ssp-card-registro-interesse__title-section-itens {
342 font-size: 15px!important;
343 margin-top: 0px!important;
344 margin-bottom: 0px!important;
345 color: #2a2e43;
346 }
347 .ssp-card-registro-interesse.emed [type="checkbox"] {
348 transform: scale(0.6);
349 margin-left: 2px;
350 }
351
352 .ssp-card-registro-interesse.emed label {
353 margin-left: 0px;
354 margin-right: 3px;
355 }
356}
357
358.ssp-card-oferta-curso__local-realizacao-content__title {
359 font-family: "Open Sans", sans-serif;
360 font-size: 10pt;
361 font-weight: normal;
362 color: #00488c;
363 font-weight: bold;
364 text-decoration: none!important;
365 padding-left: 10px;
366}
367
368 @media screen and (min-width: 767px){
369
370 .ssp-modal-local-realizacao{
371 width: 480px!important;
372 }
373 .ssp-card-modal-forma-pagamento__header {
374 margin-bottom: 20px;
375 }
376
377 .ssp-modal-local-realizacao__title{
378 color:#01488C !important;
379 text-align: center!important;
380 margin-left: -23px!important;
381 }
382
383 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title {
384 font-size: 14pt;
385 }
386 .ssp:not(.liferay-instance) [data-info="data-para-matricula"] {
387 font-size: 14px !important;
388 text-align: left;
389 }
390 .ssp-modal-emed-txt-desconto-oito {
391 padding: 10px 0 0px!important;
392 }
393 .ssp:not(.liferay-instance) .ssp-modal-emed-info-valor-matricula {
394 color: #4F596F;
395 font-size: 15px!important;
396 text-align: center;
397 font-weight: 500!important;
398 }
399}
400
401@media screen and (max-width: 767px){
402 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao {
403 width: 347px;
404 padding: 22px;
405 }
406 .ssp-modal {
407 padding-top: 72px!important;
408 }
409 .ssp-card-modal-forma-pagamento {
410 max-width: 335px!important;
411 }
412 .ssp-card-modal-forma-pagamento__body {
413 padding: 0px!important;
414 }
415 .ssp-modal-emed-txt-desconto-oito {
416 font-size: 12px !important;
417 }
418 .ssp-card-modal-forma-pagamento__header {
419 margin-bottom: 20px!important;
420 }
421 .txt-desconto-oito i {
422 font-size: 12px!important;
423 padding-top: 3px;
424 }
425 .txt-pague-vista {
426 font-size: 12px!important;
427 }
428 .txt-ganhe-mais {
429 font-size: 12px!important;
430 }
431 .ssp-modal-emed-info-valor-matricula {
432 color: #2A2E43!important;
433 font-size: 12px!important;
434 font-weight: 500!important;
435 }
436 .ssp:not(.liferay-instance) [data-info="data-para-matricula"] {
437 font-size: 12px !important;
438 line-height: 1.5;
439 text-align: left;
440 }
441
442 .ssp-desconto-2022 .txt-desconto-oito {
443 font-size: 14px !important;
444 }
445}
446
447@media screen and (max-width: 767px){
448 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title {
449 font-size: 16pt;
450 }
451}
452
453.container-local-realizacao{
454 padding: 6px;
455 border: 0.5pt solid #cdd0d8;
456 border-radius: 5px;
457 width: 260px;
458 margin: 10px auto;
459 box-shadow: 1px 1px 1px #0000000F;
460}
461
462.idioma-online{
463 border:0!important;
464 box-shadow:none!important;
465}
466
467.btn-idiomas__aula-online .fa-wifi{
468 margin-right: 7px
469}
470
471.ssp-modal-local-realizacao__title{
472 color:#01488C !important;
473 text-align: center!important;
474}
475
476h6.ssp-modal-local-realizacao__title::after {
477 content: "";
478 display: block;
479 width: 20%;
480 padding-top: 10px;
481 border-bottom: 1px solid #01488C;
482 transition: .5s;
483 margin:auto;
484}
485
486.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-wifi::after {
487 font-family: "Font Awesome 5 Free";
488 content: '\f1eb';
489 font-weight: 600;
490 color: #00488c;
491 font-size: 8px;
492 font-style: normal;
493 margin-left: 2px;
494}
495
496.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-chalkboard-teacher::after {
497 font-family: "Font Awesome 5 Free";
498 content: '\f51c';
499 font-weight: 600;
500 color: #00488c;
501 font-size: 13px;
502 font-style: normal;
503}
504
505.ssp-card-oferta-curso__local-realizacao-content__icon-wifi{
506 display: flex;
507 margin-top: 0px;
508 margin-bottom: -10px;
509}
510
511.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-wifi::after {
512 font-family: "Font Awesome 5 Free";
513 content: '\f1eb';
514 font-weight: 600;
515 color: #00488c;
516 font-size: 9pt;
517 font-style: normal;
518 margin-right: 10px;
519}
520
521.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-chalkboard-teacher::after {
522 font-family: "Font Awesome 5 Free";
523 content: '\f51c';
524 font-weight: 600;
525 color: #00488c;
526 font-size: 16pt;
527 font-style: normal;
528 margin-left: -16px;
529}
530
531.ssp-modal__local-realizacao-content__icon-wifi{
532 display: flex;
533 margin-right: 2px
534}
535
536.ssp-modal-local-realizacao__texto{
537 text-align:center!important;
538}
539
540.texto-modal-emed{
541 text-align:left;
542}
543
544.nextPrevOpacity{
545 opacity: 0.3;
546}
547
548
549 .modal-extensao {
550 display: block;
551 position: fixed;
552 z-index: 2000;
553 padding-top: 100px;
554 left: 0;
555 top: 0;
556 width: 100%;
557 height: 100%;
558 overflow: auto;
559 background-color: black;
560 background-color: rgba(0, 0, 0, 0.6);
561 font-family: Montserrat;
562 }
563 .modal-extensao_content {
564 max-width: 700px;
565 width: 100%;
566 background: white;
567 border-radius: 12px;
568 padding: 30px 60px;
569 position: relative;
570 text-align: center;
571 margin: auto;
572 -webkit-animation-name: animatetop;
573 -webkit-animation-duration: 0.4s;
574 animation-name: animatetop;
575 animation-duration: 0.4s;
576 }
577 .modal-extensao-condicoes__title {
578 color: #000!important;
579 text-transform: uppercase!important;
580 font-size: 18px!important;
581
582 }
583 .modal-extensao-condicoes__subtitle {
584 color: #000!important;
585 font-size: 18px!important;
586 margin-bottom: 0px!important;
587
588 }
589 .modal-extensao__btn {
590 background-color: #5ACC75!important;
591 font-size: 14px;
592 float: right;
593 color: #ffffff;
594 min-width: 165px;
595 }
596 .modal-extensao__btn:hover {
597 background-color: #3fb25c!important;
598 border-color: transparent;
599 color: #ffffff;
600 }
601 .modal-extensao_subtitle {
602 font-size: 13.7px!important;
603 color: #2A2E43!important;
604 font-family: Montserrat, semi-bold!important;
605 font-weight: 600!important;
606 }
607 .modal-extensao_subtitle::after {
608 content: " ";
609 display: block;
610 width: 126px;
611 height: 2px;
612 background: #707070;
613 margin: 0 auto;
614 margin-top: 5px;
615 }
616 .modal-extensao_preco {
617 color: #454F63;
618 font-size: 25px;
619 font-family: Montserrat;
620 font-weight: bold;
621 }
622 .modal-extensao_ctboleto {
623 width: 50%;
624 float: left;
625 border-color: #D7D7DB;
626 border-style: solid;
627 border-width: 1px;
628 border-left: none;
629 font-size: 21px;
630 color: #454F63
631
632 }
633 .modal-extensao_ctcard {
634 width: 50%;
635 float: left;
636 border-color: #D7D7DB;
637 border-style: solid;
638 border-width: 1px;
639 border-right: none;
640 border-left: none;
641 font-size: 21px;
642 color: #454F63;
643 }
644
645 .modal-extensao_txtPag {
646 color:#2A2E43;
647 font-size: 9px;
648 font-family: Montserrat;
649 font-weight: 600;
650 display: block;
651 }
652 .modal-extensao_txteconomiza {
653 display: block;
654 font-size: 12px;
655 }
656 .modal-extensao_txtverde {
657 color: #5ACC75;
658 }
659 .modal-extensao_txtParcela {
660 color:#2A2E43;
661 font-size: 12px;
662 font-family: Montserrat;
663 font-weight: normal;
664 display: block;
665 }
666 .modal-extensao_txtporcent{
667 font-size: 9px;
668 color: #5ACC75;
669 font-weight: 600;
670 }
671 .modal-extensao-btn-conheca {
672 color: #2967F4 !important;
673 background-color: transparent;
674 border-color: #2967F4 !important;
675 box-shadow: none !important;
676 font-size: 14px !important;
677 margin-left: 10px;
678 transition: 0.3s;
679 float: left;
680 }
681 .modal-extensao-btn-conferir {
682 color: #2967F4 !important;
683 background-color: transparent;
684 border-color: #2967F4 !important;
685 box-shadow: none !important;
686 font-size: 14px !important;
687 margin-left: 10px;
688 transition: 0.3s;
689 min-width: 330px;
690 min-height: 50px;
691 }
692 .modal-extensao-btn-conferir:hover {
693 color: #ffffff!important;
694 }
695
696 .modal-extensao-btn-conheca:hover, .modal-extensao-btn-conheca:focus {
697 color: #ffffff!important;
698 }
699 .modal-extensao-btn-aluno-sim-nao {
700 color: #000000;
701 background-color: transparent;
702 border-color: #000000 !important;
703 box-shadow: none !important;
704 font-size: 14px !important;
705 margin-left: 10px;
706 transition: 0.3s;
707 min-width: 95px;
708 }
709 .modal-extensao-btn-aluno-sim-ativo {
710 color: #ffffff!important;
711 background-color: #3969EB!important;
712 border-color: #3969EB !important;
713 }
714 .modal-extensao-btn-aluno-sim-nao:hover {
715 background-color: transparent;
716 border-color: #3969EB !important;
717 color: #3969EB!important; }
718 .modal-extensao-voltar-icon,.modal-extensao-fechar {
719 font-size: 13px;
720 position: absolute;
721 top: 30px;
722 right: 20px;
723 cursor: pointer;
724 color: #000;
725 }
726
727 .modal-extensao-voltar-txticon {
728 color: #000;
729 font-size: 9px;
730 font-family: Montserrat;
731 font-weight: 600;
732 padding-left: 5px;
733 }
734 .modal-extensao-ico-check {
735 color: #5ACC75;
736 font-size: 65px;
737 }
738 .modal-extensao-aluno_txtcontent {
739 font-size: 18px!important;
740 color: #000;
741 }
742 .modal-extensao-aluno__btn {
743 background-color: #5ACC75!important;
744 font-size: 14px;
745 color: #ffffff;
746 min-width: 330px;
747 text-transform: uppercase;
748 min-height: 50px;
749 }
750 .modal-extensao-aluno__btn:hover {
751 color: #fff;
752 background-color: #3fb25c!important;
753 border-color: transparent;
754 color: #ffffff;
755 }
756 .modal-extensao-ico-percent {
757 background-color: blue;
758 color: #fff;
759 font-size: 48px;
760 border-radius: 50%;
761 padding: 10px 18px;
762 }
763
764 .btn-preco-ex-aluno,.btn-preco-padrao{
765
766 background:none;
767 border: none;
768 width: 100%;
769 display: flex;
770 align-items: center;
771 justify-content: space-between;
772 text-align: left;
773 font-size: 14px;
774 }
775
776 .custom-icon-right{
777 transform: rotate(0);
778 transition: all 0.5s;
779 }
780
781 .custom-icon-right-active{
782 transform: rotate(90deg);
783 }
784
785 .ssp-divisor{
786 width: 100%;
787 color: #D7D7DB;
788 margin: 15px 0;
789 }
790
791
792 @media only screen and (max-width: 768px){
793
794 .modal-extensao_content{
795 width:336px;
796 padding: 60px 20px 20px 20px;
797 }
798
799 .modal-extensao__btn{
800 width: 100%;
801 }
802
803 .modal-extensao-modal-extensao__btn {
804 float: initial;
805 width: 234px;
806 }
807 .modal-extensao-btn-conheca {
808 float: initial;
809 width: 100%;
810 margin-left: 0px;
811 }
812 .modal-extensao-aluno__btn {
813 min-width: 234px;
814 }
815 .modal-extensao-btn-conferir{
816 min-width: 234px;
817 margin-left: 0px;
818 }
819 }
820
821
822/* Emed */
823.ssp-btn-emed__voltar-curso {
824 border: 1px solid #474F61;
825 color: #474F61;
826 max-width: 372px;
827 margin-left: 60px;
828 height: 50px;
829 padding: 12px!important;
830}
831
832@media (max-width: 768px) {
833 .ssp-btn-emed__voltar-curso {
834 font-size: 14px;
835 margin-left: 0px!important;
836 }
837}
838
839@media only screen and (max-width: 767px){
840 .ssp:not(.liferay-instance) .ssp-emed-visita-text {
841 margin: 0;
842 transform: none;
843 margin-left: 10px;
844 }
845}
846
847.ssp:not(.liferay-instance) .icon-map-adress::after {
848 padding: 0 8px 0 0;
849}
850
851.ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal {
852 margin: 5px 0;
853}
854
855.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento {
856 width: 100%;
857 color: white !important;
858 font-size: 15px;
859 font-weight: 600;
860 margin: 10px 0;
861}
862
863.ssp-modal-emed-info-txt-matricula {
864 display: inline-block;
865}
866.ssp:not(.liferay-instance) .btn-card-investimento.--inscreva-se.disabled, .ssp:not(.liferay-instance) a.btn.btn-success.disabled.manutencao {
867 background: #BFC3C9 !important;
868 color: #454F63!important;
869 opacity: 1!important;
870 font-size: 14px;
871 border:none;
872}
873
874.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--bolsas.disabled {
875 background: #E5E8ED;
876 color: #454F63!important;
877 opacity: 1;
878 font-size: 14px;
879}
880
881.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--inscreva-se {
882 background-color: #5acc75;
883 text-transform: none;
884}
885
886.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .link-descontos-parcelamentos {
887 font-weight: 600;
888}
889
890.ssp:not(.liferay-instance) .ssp-card-oferta-curso__sem-vaga-title {
891 margin: 0;
892}
893
894.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-container {
895
896 padding: 0;
897
898}
899
900.ssp:not(.liferay-instance) .ssp-ofertas-emed__filtro-content {
901 padding: 40px 0;
902}
903
904.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .txt-boleto-cartao {
905 text-align: center;
906}
907.ssp-card-modal-emed-lineou {
908height: 1px;
909 background-color: #FC7834;
910 text-align: center;
911 width: 50%;
912 margin: 0px auto;
913 margin-bottom: 15px;
914}
915.ssp-card-modal-emed-lineou span {
916background-color: white;
917 position: relative;
918 top: -0.8em;
919 padding: 0 19px;
920 font-weight: bold;
921 color: #2A2E43;
922 font-size: 15px;
923}
924.ssp-modal-emed-txtValor {
925 font-size: 16px;
926 color: #04488C;
927 font-weight: bold;
928}
929.ssp-card-modal-emed-centralizaPagtos{
930max-width: 285px;margin:0 auto; margin-top: 18px!important;
931}
932.ssp-card-modal-forma-pagamento__tipos-content p {
933 font-weight: 500!important;
934}
935.textoCartoesAceitos {
936 font-weight: 500!important;
937}
938.ssp-card-modal-emed-valorObs {
939 color: #004A8C;
940 display: flex;
941 justify-content: center;
942 font-weight: 500;
943 padding-top: 11px;
944 font-size: 14px;
945}
946.ssp-card-modal-emed-boxDesconto{
947 border: 0!important;
948 font-weight: 500!important;
949 background-color: #F7F7F7;
950 border-radius: 13px;
951 padding: 20px 40px!important;
952 margin-bottom: 0!important;
953}
954.ssp-modal-emed-boxoito {
955 padding: 5px 45px!important;
956 text-align: center;
957 border-bottom: 0px!important;
958}
959.ssp-modal-emed-btfechar {
960 position: absolute;
961 right: 0;
962 display: flex;
963 flex-direction: column;
964 text-align: center;
965 line-height: 0.9;
966 top: -48px;
967 color: #E4E8F0;
968 font-weight: 500;
969 font-size: 14px;
970}
971.ssp-card-modal-forma-pagamento__btn-close:hover {
972 opacity: .6;
973}
974.ssp-card-modal-emed-ano {
975 font-weight: 500;
976 font-size: 22px;
977 color: #454F63;
978}
979.ssp:not(.liferay-instance) [data-info="msg-20-desconto"] {
980 font-weight: 500!important;
981
982}
983.ssp-card-modal-emed-valorObs i {
984 padding-top: 2px;
985 padding-right: 3px;
986}
987button[id^="btnComprarEmedModal_"] {
988 height: 50px;
989 font-weight: 600;
990 max-width: 372px;
991 width: 100%;
992 margin: 0 auto;
993 /* margin-left: 60px; */
994 display: block;
995 height: 50px;
996 padding: 12px !important;
997
998}
999.obsspan {
1000 justify-content: left;
1001 padding-bottom: 10px;
1002}
1003
1004.emed_transferencia_texto{
1005 font-size:20px!important;;
1006}
1007
1008
1009@media only screen and (max-width: 767px){
1010
1011 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal {
1012 width: 100%;
1013 }
1014
1015 .ssp-card-modal-emed-valorObs {
1016 font-size: 12px;
1017 }
1018 .obsspan {
1019 justify-content: left;
1020 margin-left: -14px!important;
1021 }
1022 .ssp-modal-emed-boxoito {
1023 padding: 5px 0px!important;
1024 }
1025 .ssp-modal-emed-info-txt-matricula {
1026 display: inherit;
1027 }
1028 .ssp-card-modal-emed-boxDesconto{
1029 padding: 20px 20px!important;
1030 font-size: 12px!important;
1031 }
1032 .ssp:not(.liferay-instance) [data-info="msg-20-desconto"] {
1033 font-size: 12px !important;
1034 font-weight: 500!important;
1035 }
1036 .ssp-modal-emed-btfechar {
1037 font-size: 12px;
1038
1039 }
1040 button[id^="btnComprarEmedModal_"] {
1041 height: 50px;
1042 padding: 10px;
1043 border-radius: 4px;
1044 margin-left: 0px!important
1045 }
1046 button[id^="btnComprarEmedModal_"] span {
1047 font-size: 15px;
1048 font-weight: 600;
1049 }
1050 .ssp-btn-emed__voltar-curso_0 {
1051 font-weight: 600!important;
1052 height: 50px;
1053 border-radius: 4px!important;
1054 padding: 14px!important;
1055 }
1056
1057 .emed_transferencia_texto{
1058 font-size:16px!important;
1059 }
1060
1061}
1062
1063@media screen and (min-width: 1200px){
1064 .ssp-col-lg-without {
1065 flex: unset;
1066 width: unset;
1067 }
1068}
1069@media screen and (max-width: 1199px){
1070 .ssp-desconto-2022 .modal-extensao_txteconomiza {
1071 font-size: 12px !important;
1072 }
1073 .ssp-filters-px {
1074 padding: 0 !important;
1075 }
1076 .ssp-switch-label {
1077 margin: auto 0 !important;
1078 }
1079 .ssp-switch-label-message {
1080 margin-top: 10px;
1081 margin-bottom: 10px;
1082 padding-right: 0 !important;
1083 padding-left: 0 !important;
1084 }
1085 .ssp-container-selecione-unidade [name="unidades-ofertas"] {
1086 max-width: 316px!important;
1087 }
1088 .ssp-detalhe-curso-titulo-filter {
1089 font-size: 16px !important;
1090 }
1091}
1092
1093
1094.ssp-filters-px {
1095 padding: 0 80px;
1096}
1097/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
1098/* !!!!!!! CSS Destinado ao switch(toggle) !!!!!!! */
1099/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
1100.ssp-switch {
1101 position: relative;
1102 display: inline-block;
1103 width: 63px;
1104 height: 32px;
1105}
1106
1107.ssp-switch input {
1108 opacity: 0;
1109 width: 0;
1110 height: 0;
1111}
1112
1113.ssp-switch-label {
1114 margin: auto 15px;
1115 font: normal normal 600 16px/19px Montserrat;
1116 letter-spacing: 0px;
1117 color: #FFFFFF;
1118 white-space: nowrap;
1119}
1120
1121.ssp-switch-label-section {
1122 font: normal normal 600 18px/22px Montserrat;
1123 margin-bottom: 11px;
1124}
1125
1126.ssp-switch-label-message {
1127 font: normal normal medium 16px/19px Montserrat !important;
1128 letter-spacing: 0px;
1129 color: #FFFFFF;
1130 margin-top: 16px;
1131 padding-left: 25px;
1132 padding-right: 25px;
1133}
1134
1135.ssp-switch-divider {
1136 border-bottom: 1px solid #4a4d5f;
1137 width: 100%;
1138}
1139
1140.ssp:not(.liferay-instance) .ssp-detalhe-curso-titulo-filter.ssp-detalhe-curso-titulo-filter {
1141 font-size: 21px;
1142}
1143
1144.ssp-switch-slider {
1145 position: absolute;
1146 cursor: pointer;
1147 top: 0;
1148 left: 0;
1149 right: 0;
1150 bottom: 0;
1151 background-color: #00000000;
1152 border: 1px solid #FFFFFF;
1153 -webkit-transition: .4s;
1154 transition: .4s;
1155}
1156
1157.ssp-switch-slider:before {
1158 position: absolute;
1159 content: "";
1160 height: 21px;
1161 width: 21px;
1162 left: 4px;
1163 bottom: 4px;
1164 background-color: white;
1165 -webkit-transition: .4s;
1166 transition: .4s;
1167}
1168
1169input:checked + .ssp-switch-slider {
1170 background-color: #5ACC75;
1171 border: 1px solid #5ACC75;
1172}
1173input:checked + .ssp-switch-slider-secondary {
1174 background-color: #2967F4;
1175 border: 1px solid #2967F4;
1176}
1177
1178input:focus + .ssp-switch-slider {
1179 box-shadow: 0 0 1px #5ACC75;
1180}
1181input:focus + .ssp-switch-slider-secondary {
1182 box-shadow: 0 0 1px #2967F4;
1183}
1184
1185input:checked + .ssp-switch-slider:before {
1186 -webkit-transform: translateX(33px);
1187 -ms-transform: translateX(33px);
1188 transform: translateX(33px);
1189}
1190
1191/* Rounded sliders */
1192.ssp-switch-slider.round {
1193 border-radius: 34px;
1194}
1195
1196.ssp-switch-slider.round:before {
1197 border-radius: 50%;
1198}
1199
1200/*Utilizado no modal de registro de interesse #9309*/
1201option[value=""][disabled] {
1202 display: none;
1203}
1204/* Css para botao de idiomas online */
1205
1206.btn-idiomas__aula-online{
1207 background:#5382FF;
1208 color:white!important;
1209 text-decoration:none!important;
1210 padding:11px 14px;
1211 border-radius:4px;
1212 font-size:13px;
1213 font-weight:600;
1214 transition:.3s;
1215}
1216
1217.btn-idiomas__aula-online:hover{
1218 background:#5275D1;
1219 font-weight:600!important;
1220}
1221
1222.title-idioma-online__modal,.icon-wifi-title__modal{
1223 color:#5382FF!important;
1224 font-size:25px!important;
1225 margin:0!important;
1226 margin-right:5px!important;
1227}
1228
1229.btn-modal-entendi__idioma-online{
1230 font-size:16px!important;
1231 font-weight:600!important;
1232 color:#5382FF!important;
1233 border:#5382FF 1px solid!important;
1234 padding:15px 142px;
1235 width:auto!important;
1236}
1237
1238.btn-modal-entendi__idioma-online:hover{
1239 font-size:16px!important;
1240 font-weight:600!important;
1241 color:#5382FF!important;
1242 border:#5382FF 1px solid!important;
1243 background:white!important;
1244}
1245
1246@media only screen and (max-width: 768px){
1247
1248 .title-idioma-online__modal,.icon-wifi-title__modal{
1249 color:#5382FF!important;
1250 font-size:21px!important;
1251 margin:0!important;
1252 margin-right:5px!important;
1253 }
1254
1255 .btn-modal-entendi__idioma-online{
1256 font-size:16px!important;
1257 font-weight:600!important;
1258 color:#5382FF!important;
1259 border:#5382FF 1px solid!important;
1260 padding:12px 30%;
1261 width:auto!important;
1262 }
1263
1264}
1265
1266.btn-emed-lista-espera{
1267 background-color:#C560C7!important;
1268}
1269
1270.ssp:not(.liferay-instance) .ssp-container__form-select {
1271 max-width: 430px;
1272 width:100%;
1273}
1274
1275
1276@media (max-width: 768px){
1277 .ssp:not(.liferay-instance) .ssp-ofertas-emed__card {
1278 margin: 10px 20px;
1279 max-width: 335px;
1280 }
1281}
1282
1283/* css EMED Registro de interesse */
1284
1285.emed #periodo-registro-interesse,.emed #turmas-registro-interesse{
1286
1287 display: flex;
1288 align-items: center;
1289 padding: 0.625rem 0;
1290 width: 85%;
1291 justify-content: space-between;
1292 margin: 0 auto;
1293
1294}
1295
1296.ssp-card-registro-interesse__title-section-itens{
1297 margin: 10px 0 11.5px 0 !important;
1298 font-size: 20px;
1299 flex-basis: 120px;
1300}
1301
1302.ssp-card-registro-interesse__check-itens-content {
1303 display: flex!important;
1304 justify-content: center!important;
1305 flex: 0 1 90%!important;
1306}
1307.ssp-card-registro-interesse__check-item {
1308 display: flex;
1309 align-items: center;
1310 flex-basis: 100px;
1311}
1312
1313.ssp-card-registro-interesse label {
1314 margin-right: 0!important;
1315}
1316
1317.ssp-card-registro-interesse [type="checkbox"] {
1318box-shadow: 0px 0px 6px #00000029;
1319}
1320
1321#cursos-registro-interesse,#unidades-registro-interesse{
1322padding: 10px 0;
1323}
1324
1325.emed-select-group{
1326
1327box-shadow: 0px 0px 12px #00000010;
1328border: 1px solid #6E6E6E;
1329border-radius: 4px;
1330padding: 1.0rem 1.125rem;
1331margin: 1rem 0;
1332
1333}
1334
1335.ssp:not(.liferay-instance) .ssp-card-registro-interesse__add-mais > a {
1336 color: #457eff !important;
1337 }
1338
1339.emed .ssp-card-registro-interesse__btn-enviar {
1340background-color: #C560C7 !important;
1341}
1342
1343.ssp-card-registro-interesse__title-modal{
1344color:#C560C7 !important;
1345font-size: 35px !important;
1346font-weight: bold !important;
1347margin: 0 !important;
1348}
1349
1350#msg-transferencia-emed{
1351display: flex;
1352justify-content: center;
1353flex: wrap;
1354flex-direction: column;
1355align-items: center;
1356padding: 1rem 0;
1357}
1358
1359.transferencia-emed-title {
1360 color: #d266d4;
1361 display: flex;
1362 gap: 10px;
1363 font-size: 16px;
1364 font-weight: bold;
1365 align-items:center;
1366}
1367
1368.transferencia-emed-title p {
1369 margin: 0 !important;
1370 font-weight: bold !important;
1371 font-size: 16px!important;
1372}
1373
1374.transferencia-emed-link a{
1375 font-size: 15px;
1376 font-weight: 500!important;
1377 color: #792F7A;
1378 display: block;
1379 text-align: center;
1380}
1381
1382.transferencia-emed-link a:hover {
1383 font-weight: 500!important;
1384 color: #792F7A;
1385}
1386
1387.emed .ssp-card-registro-interesse__label-curso-selecionado{
1388color:#2A2E43!important;
1389font-weight: bold!important;
1390font-size: 28px;
1391}
1392
1393
1394/* css para registro de interesse atual */
1395
1396#periodo-registro-interesse,#dias-registro-interesse{
1397padding: .625rem 0;
1398}
1399
1400/* css card sem turma e registro de interesse emed*/
1401
1402.slick-area-emed {
1403 display: -webkit-box !important;
1404 display: -ms-flexbox !important;
1405 display: flex !important;
1406 -webkit-box-align: center;
1407 -ms-flex-align: center;
1408 align-items: center;
1409 -webkit-box-pack: center;
1410 -ms-flex-pack: center;
1411 justify-content: center;
1412 font-size: 0;
1413 -ms-flex-wrap: nowrap;
1414 flex-wrap: nowrap;
1415 }
1416
1417 .slick-area-emed .slick-track, .slick-area-emed .slick-list {
1418 width: 100%;
1419 }
1420
1421 @media only screen and (max-width: 1199px) and (min-width: 768px) {
1422 .slick-area-emed--md-bleed {
1423 width: 100vw;
1424 left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important;
1425 }
1426 .slick-area-emed--md-bleed .slick-list {
1427 padding-left: calc(calc(50vw - (768px / 2) + 37px));
1428 padding-right: calc(calc(50vw - (768px / 2) + 37px));
1429 }
1430 .slick-area-emed--md-bleed .slick-arrow {
1431 display: none !important;
1432 }
1433 }
1434
1435 @media only screen and (min-width: 376px) and (max-width: 1024px) {
1436 .slick-area-emed--md-bleed {
1437 width: 100vw;
1438 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1439 }
1440 .slick-area-emed--md-bleed .slick-list {
1441 padding-left: 2px;
1442 }
1443 .slick-area-emed--md-bleed .slick-arrow {
1444 display: none !important;
1445 }
1446 }
1447
1448 @media only screen and (max-width: 375px) {
1449
1450 .ssp-emed__card-slider-body {
1451 padding: 25px 30px;
1452 }
1453
1454
1455 .slick-area-emed--md-bleed {
1456 width: 100vw;
1457 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1458 }
1459 /* .slick-area-emed--md-bleed .slick-list {
1460 padding-left: 20px;
1461
1462 } */
1463 .slick-area-emed--md-bleed .slick-arrow {
1464 display: none !important;
1465 }
1466 }
1467
1468 .slick-area__item {
1469 display: flex;
1470 flex-basis: auto;
1471 }
1472
1473 .ssp-emed__section__textCard {
1474 margin: 20px 0 0 0;
1475}
1476
1477 .ssp-emed__card-slider-body {
1478 padding: 25px 50px;
1479 min-height: 350px;
1480 display: flex;
1481 flex-direction: column;
1482 }
1483
1484 .slick-area__item {
1485 display: flex;
1486 flex-basis: auto;
1487 }
1488
1489 .ssp-emed__card-slider-body a {
1490 text-decoration: none!important;
1491 font-weight: normal;
1492 color: #78849E
1493 }
1494
1495 .ssp-emed__card-slider-body a:hover {
1496 font-weight: bold!important;
1497 color: #2a2e43
1498 }
1499
1500 .ssp-emed__card-slider {
1501 border-radius: 12px;
1502 background: transparent;
1503 -webkit-box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%);
1504 box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%);
1505 margin: 12px;
1506 position: relative;
1507 overflow: hidden;
1508 color: #ffffff!important;
1509 border: 1px solid #fff;
1510 min-height: 350px;
1511 }
1512
1513 .slick-initialized .slick-track {
1514 display: flex;
1515 }
1516
1517 .slick-initialized .slick-slide {
1518 height: inherit!important;
1519 display: flex;
1520 }
1521
1522 .ssp-emed__section__titleCard {
1523 font-size: 28px !important;
1524 color: #ffffff !important;
1525 margin: 0 !important;
1526 display: flex !important;
1527 justify-content: flex-start !important;
1528 flex-direction: row !important;
1529 align-items: start !important;
1530 flex-basis: 60px;
1531}
1532
1533.ssp-emed__section__titleCard i {
1534 font-size: 28px;
1535 color: #ffffff;
1536 margin: 0 0.85rem 0 0;
1537 line-height: 30px;
1538}
1539
1540.ssp-emed__section__titleCard i.fa-envelope {
1541 margin-top: 0px;
1542}
1543
1544.ssp-emed__section__titleCard i.fa-users-class {
1545 margin-top:2px;
1546}
1547
1548.ssp-emed__section__titleCard div {
1549 text-decoration: underline;
1550 font-size: 28px !important;
1551 font-weight: bold;
1552 margin: 0!important;
1553 transform:translateY(-2px)
1554}
1555
1556 .ssp-emed__section__introCard {
1557 display: block;
1558 font: 28px/30px 'Montserrat';
1559 font-weight: 600;
1560 margin: 20px 0;
1561 color: #ffffff;
1562 }
1563
1564 .ssp-emed__section__introCardCTA {
1565 font: 34px/36px 'Montserrat';
1566 font-weight: bold;
1567 display: block;
1568 margin: 20px 0;
1569 color: #ffffff;
1570 }
1571
1572 .ssp-emed__section__textCard {
1573 font: 22px/30px 'Montserrat';
1574 color: #ffffff;
1575 display: block;
1576 margin: 20px 0 0 0;
1577 position: relative;
1578 }
1579
1580 .ssp-emed__iconWrapper {
1581 display: inline-block;
1582 width: 50px;
1583 color: #B053B2;
1584 position: absolute;
1585 bottom: 0;
1586 right: 0;
1587 }
1588
1589 .ssp-emed__btn {
1590 background-color: #B053B2 ;
1591 color: #fff!important;
1592 font: normal normal 600 18px/22px Montserrat;
1593 box-shadow: 0px 4px 16px #455B6314;
1594 width: 100%;
1595 transition: .3s;
1596 padding:10px!important;
1597 }
1598
1599 .ssp-emed__btn:hover {
1600 opacity: 0.7;
1601 }
1602
1603 /*mobile emed*/
1604 @media only screen and (max-width: 1024px) {
1605 .slick-area-emed .slick-dots li.slick-active button:before {
1606 opacity: .75;
1607 color: #707070;
1608 }
1609
1610 .slick-area-emed .slick-dots li button:before {
1611 color: blue;
1612 }
1613
1614 .ssp-card-detalhe-curso__secundary-info-carga-horaria {
1615 min-width: 35%;
1616 text-align: end;
1617 }
1618 }
1619
1620 @media only screen and (max-width: 1199px) and (min-width: 768px) {
1621 .slick-area-emed--md-bleed {
1622 width: 100vw;
1623 left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important;
1624 }
1625 .slick-area-emed--md-bleed .slick-list {
1626 padding-left: calc(calc(50vw - (768px / 2) + 37px));
1627 padding-right: calc(calc(50vw - (768px / 2) + 37px));
1628 }
1629 .slick-area-emed--md-bleed .slick-arrow {
1630 display: none !important;
1631 }
1632 }
1633
1634 @media only screen and (min-width: 375px) and (max-width: 1024px) {
1635 .slick-area-emed--md-bleed {
1636 width: 100vw;
1637 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1638 }
1639 .slick-area-emed--md-bleed .slick-list {
1640 padding-left: 2px;
1641 }
1642 .slick-area-emed--md-bleed .slick-arrow {
1643 display: none !important;
1644 }
1645 .ssp-emed__section__titleCard {
1646 align-items: start !important;
1647 }
1648
1649 .ssp-emed__section__titleCard div {
1650 font-weight: bold !important;
1651 }
1652
1653 .ssp-emed__section__titleCard i {
1654 font-weight: 300 !important;
1655 font-size: 28px !important;
1656 margin: 3px 0.85rem 0 0;
1657 }
1658
1659 .transferencia-emed-title {
1660 font-size: 12px;
1661 }
1662
1663 .ssp:not(.liferay-instance) .ssp-card-registro-interesse__select {
1664 background-size: 15px 15px !important;
1665 padding: 0 10px;
1666 }
1667 }
1668
1669 @media only screen and (max-width: 550px) {
1670
1671 .ssp-emed__section__introCardCTA{
1672 font-size: 28px;
1673 }
1674
1675 #msg-transferencia-emed{
1676 gap:12px;
1677 }
1678
1679
1680
1681 .ssp-emed__card-slider {
1682 width:335px;
1683 min-height: 440px;
1684 }
1685
1686 .slick-initialized .slick-track {
1687 display: flex;
1688 }
1689
1690 .slick-initialized .slick-slide {
1691 height: inherit!important;
1692 display: flex;
1693 min-height: 440px;
1694 }
1695
1696 .ssp-emed__card-slider-body {
1697 padding: 25px 30px;
1698 }
1699
1700 .ssp-emed__section__titleCard div {
1701 transform: translateY(-5%);
1702 font-size: 24px!important;
1703 }
1704
1705 .slick-area-emed--md-bleed {
1706 width: 100vw;
1707 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1708 }
1709 .slick-area-emed--md-bleed .slick-list {
1710 padding-left: 20px;
1711 }
1712 .slick-area-emed--md-bleed .slick-arrow {
1713 display: none !important;
1714 }
1715
1716 .ssp-card-registro-interesse__title-section-itens {
1717 flex-basis: 80px;
1718 }
1719
1720 .emed #periodo-registro-interesse, .emed #turmas-registro-interesse {
1721 width: 95%;
1722 }
1723
1724 .emed .ssp:not(.liferay-instance) .ssp-card-registro-interesse label {
1725 margin: 0!important;
1726 }
1727
1728 .emed .ssp-card-registro-interesse.emed [type="checkbox"] {
1729 margin-left: 0!important;
1730 }
1731
1732 .emed .ssp-card-registro-interesse__check-item {
1733 flex-basis: 100px;
1734 }
1735 }
1736
1737 .emed-select-group {
1738 box-shadow: 0px 0px 12px #00000010;
1739 border: 1px solid #6E6E6E;
1740 border-radius: 4px;
1741 margin: 1rem 0;
1742}
1743
1744.emed-select-group h4 {
1745 margin: 15px 0 10px 0;
1746}
1747.ssp-emed__section__textCard {
1748 margin: 20px 0 0 0;
1749}
1750
1751.ssp-card-msg-sucesso__btn{
1752 font-size: 20px;
1753}
1754
1755.ssp:not(.liferay-instance) .ssp-card-oferta-curso {
1756 height:fit-content;
1757}
1758
1759.ssp-card-duvida__bolsa-estudo{
1760
1761background:#DCE8FF;
1762padding: 30px;
1763max-width: 683px;
1764width: 100%;
1765border-radius: 14px;
1766display:flex;
1767justify-content:center;
1768align-items: center;
1769gap: 20px;
1770margin: 1rem auto;
1771
1772}
1773
1774.ssp-card-duvida__bolsa-estudo p{
1775
1776font-size: 16px!important;
1777font-weight: bold!important;
1778color: #2967F4!important;
1779margin: 0!important;;
1780
1781}
1782
1783.ssp-card-duvida__bolsa-estudo a{
1784
1785border:1px solid #2967F4!important;
1786font-size: 14px!important;
1787font-weight: 600;
1788text-decoration: none!important;
1789color: #2967F4!important;
1790padding:14px 27px;
1791border-radius:6px;
1792transition: .3s;
1793
1794}
1795
1796.ssp:not(.liferay-instance) .ssp-card-duvida__bolsa-estudo a:hover{
1797
1798font-size: 14px!important;
1799font-weight: 600!important;
1800background: #2967F4!important;
1801color:white !important;
1802opacity:1!important;
1803
1804}
1805
1806@media only screen and (max-width: 768px){
1807
1808.ssp-card-duvida__bolsa-estudo{
1809
1810 background:#DCE8FF;
1811 padding: 20px;
1812 flex-flow: column;
1813 width:90%;
1814
1815}
1816
1817.ssp-card-duvida__bolsa-estudo p{
1818
1819 max-width:200px;
1820 text-align: center;
1821
1822}
1823
1824.ssp-card-duvida__bolsa-estudo a{
1825
1826 padding:16px 27px;
1827
1828}
1829
1830}
1831
1832/* Novo Card de Oferta */
1833
1834 /* ajustes no card existente */
1835
1836 .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma{
1837 margin-bottom: 30px;
1838 }
1839
1840 .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma-content {
1841 margin-bottom: 5px;
1842 }
1843
1844 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-data-periodo{
1845 margin: 5px 0 10px 0;
1846 }
1847
1848 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item {
1849 border-radius: 0;
1850 background-color: unset;
1851 padding: 0;
1852 max-width: 100%;
1853 width: 100%;
1854 margin: 0;
1855 }
1856
1857 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora_content{
1858 margin:0;
1859 opacity: 0;
1860 transition: 0.3s;
1861 }
1862
1863 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia {
1864 margin: 0;
1865 font-size: 17px;
1866 font-weight: bold;
1867 font-stretch: normal;
1868 font-style: normal;
1869 line-height: 1.23;
1870 letter-spacing: normal;
1871 text-align: center;
1872 }
1873
1874 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__hora {
1875 margin: 0;
1876 font-size: 17px;
1877 font-weight: bold;
1878 font-stretch: normal;
1879 font-style: normal;
1880 line-height: 1.3;
1881 letter-spacing: normal;
1882 text-align: center;
1883 }
1884
1885 .modal-extensao_txteconomiza{
1886 font-size: 14px;
1887 color: #454F63;
1888 font-weight: 400;
1889 }
1890
1891 .btn.btn-lg {
1892 padding:.7rem;
1893
1894 }
1895
1896 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{
1897 font-size: 17px;
1898 }
1899
1900 .ssp-card-oferta-curso__item-valor-investimento{
1901 font-size: 38px;
1902 }
1903
1904 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__title{
1905 color: #454F63;
1906 font-weight: bold!important;
1907 font-size: 14px;
1908}
1909
1910.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card::after{
1911 color: #454F63!important;
1912 font-size: 14px;
1913}
1914
1915.ssp-card-modal-forma-pagamento__icon-boleto-e-cartao{
1916 font-size: 18px!important;
1917 margin-right: 15px!important;
1918}
1919
1920
1921.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content span{
1922 color:#454F63;
1923 font-size: 14px;
1924 font-weight: 400;
1925}
1926
1927.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content {
1928 padding-bottom: 0;
1929}
1930
1931 /* local realizacao */
1932
1933 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title {
1934 font-size: 13px;
1935 color: #00488C;
1936 font-weight: 600;
1937 text-decoration: none!important;
1938 border: 1px solid #00488C;
1939 padding: 11px 14px;
1940 transition:.3s;
1941 border-radius: 4px;
1942 display: flex;
1943 gap: 5px;
1944 align-items: center;
1945 }
1946
1947 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title:hover {
1948 color: white;
1949 font-weight: 600!important;
1950 background: #08488C;
1951 }
1952
1953 .container-local-realizacao {
1954 padding:0;
1955 border:0;
1956 border-radius: unset;
1957 width: 100%;
1958 margin: 10px 0 0 0;
1959 box-shadow: none;
1960 display: flex;
1961 justify-content:center;
1962 align-items: flex-end;
1963 }
1964
1965 .icon-local-realizacao{
1966 color: #00488C;
1967 font-size: 13px;
1968 }
1969
1970
1971 @media only screen and (max-width: 768px){
1972
1973 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia {
1974 font-size: 16px;
1975 }
1976
1977 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__title-item {
1978 font-size: 14px!important;
1979 }
1980
1981 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__valor-desconto{
1982 font-size: 15px;
1983 }
1984
1985 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-valor-investimento {
1986 font-size: 33px;
1987 }
1988
1989 .icon-local-realizacao {
1990 font-size: 12px;
1991 }
1992
1993 .modal-extensao_txteconomiza {
1994 font-size: 12px;
1995 }
1996
1997 .content-valores-descontos {
1998 padding-bottom: 8px!important;
1999 }
2000
2001 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{
2002 font-size: 14px!important;
2003 }
2004
2005
2006 }
2007
2008
2009
2010
2011/* final ajustes no card existente */
2012
2013
2014/* Novos elementos */
2015
2016.content-data-dias{
2017 padding:20px;
2018 padding-top:0;
2019 border-bottom: none !important;
2020}
2021
2022.content-valores-descontos{
2023 padding:20px 0 0 0;
2024 opacity: 1;
2025 height:auto;
2026 transition: 0.3s;
2027 overflow: hidden;
2028 border-top: 1px #E4E8F0 solid;
2029}
2030
2031.content-valores-descontos.hide-price{
2032
2033 padding:0;
2034 opacity: 0;
2035 height:0;
2036
2037}
2038
2039.content-btn-bolsa{
2040
2041 border-top: 1px #E4E8F0 solid;
2042 padding-top:20px;
2043
2044}
2045
2046.content-btn-bolsa.modifier-content-show{
2047
2048 padding-bottom: 20px;
2049
2050}
2051
2052.content-btn-bolsa.modifier-content-show .ou-separator-desconto{
2053 display:none;
2054}
2055
2056.content-btn-bolsa.modifier-content-show .btn-show-price{
2057 display:none;
2058}
2059
2060.content-buttons{
2061
2062 padding:20px 0 0 0;
2063
2064}
2065
2066.block-valor-desconto{
2067
2068 background-color:#F2F6FF;
2069 padding: 30px 10px 15px 10px;
2070 border-radius:12px;
2071 position: relative;
2072
2073}
2074
2075.block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span {
2076 font-size: 18px;
2077}
2078
2079.block-valor-total{
2080
2081 background-color:#F2F6FF;
2082 padding:15px 10px;
2083 border-radius:12px;
2084 position: relative;
2085
2086}
2087
2088.block-valor-total .ssp-card-oferta-curso__title-item{
2089 font-size: 16px!important;
2090 color: #454F63!important;
2091 font-weight:500!important;
2092}
2093
2094.block-valor-total .ssp-card-oferta-curso__item-valor-investimento{
2095 font-size:22px;
2096}
2097
2098.block-valor-total .ssp-card-oferta-curso__item-valor-investimento span{
2099 font-size:11px;
2100}
2101
2102.block-valor-total .ssp-card-oferta-curso__desconto-content p{
2103 font-size:14px;
2104 font-weight: 500;
2105}
2106
2107.tag-label-desconto{
2108
2109background-color:#B6FDCF;
2110border-radius: 15px;
2111padding:5px;
2112margin: -50px 20px 10px 20px;
2113
2114}
2115
2116.tag-label-desconto span, .tag-label-desconto small{
2117font-size: 16px!important;
2118font-weight: bold!important;
2119color: #454F63!important;
2120}
2121
2122
2123
2124.ou-separator-desconto{
2125 font-size: 16px;
2126 color: #454F63;
2127 font-weight: bold;
2128 display:flex;
2129 flex-wrap: nowrap;
2130 align-items: center;
2131 justify-content:space-between;
2132 gap: 15px;
2133 padding:20px 0;
2134}
2135
2136.ou-separator-desconto::after{
2137 content: "";
2138 height:2px;
2139 background-color:#E4E8F0;
2140 width: 100%;
2141 display: block;
2142}
2143
2144.ou-separator-desconto::before{
2145 content: "";
2146 height:2px;
2147 background-color:#E4E8F0;
2148 width: 100%;
2149 display: block;
2150}
2151
2152.btn-show-price{
2153
2154 background: unset;
2155 border: 0;
2156 font-size: 14px!important;
2157 color: #454F63!important;
2158
2159}
2160
2161.btn-show-price p{
2162 margin: 0 !important;
2163}
2164
2165.btn-show-price span{
2166 text-decoration: underline;
2167 font-weight: bold;
2168}
2169
2170@media only screen and (max-width: 768px){
2171
2172 .content-data-dias{
2173
2174 padding:20px 0;
2175
2176 }
2177
2178 .ssp-card-oferta-curso__local-realizacao-content__title {
2179
2180 font-size: 14px;
2181 display:flex;
2182 align-items: center;
2183 gap: 5px;
2184 padding: 10px 13px;
2185 }
2186
2187 .ssp-card-oferta-curso__local-realizacao-content__title i{
2188
2189 font-size: 11px;
2190 }
2191
2192 .tag-label-desconto span, .tag-label-desconto small {
2193 font-size: 13px!important;
2194 }
2195
2196 .tag-label-desconto {
2197 padding: 5px;
2198 margin: -50px 12px 10px 12px;
2199 }
2200
2201 .block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span {
2202 font-size: 18px;
2203 }
2204
2205 .content-buttons {
2206 padding: 10px 0 0 0;
2207 }
2208
2209
2210}
2211
2212/*final Novo card de ofertas*/
2213
2214/* form aprendizagem */
2215
2216[data-modal="modal"]{
2217 background-color: rgba(0,0,0,0.7);
2218 backdrop-filter: blur(10px);
2219 display:none;
2220}
2221
2222[data-modal="close-form-modal"]{
2223
2224 font-size: 22px;
2225 background: unset!important;
2226 color: white!important;
2227 display: flex;
2228 align-items: center;
2229 margin: 0;
2230 padding: 0;
2231 position:absolute;
2232 right:0;
2233 border:0;
2234 gap:5px;
2235 right: 2%;
2236 top: -2%;
2237
2238}
2239
2240[data-modal="close-form-modal"] i{
2241
2242 font-size:43px;
2243 height:fit-content;
2244
2245}
2246
2247.open-modal-form{
2248 position: fixed;
2249 top: 0;
2250 width: 100%;
2251 height: 100%;
2252 z-index: 100;
2253 display: flex;
2254 justify-content: center;
2255 align-items: center;
2256 overflow:auto;
2257
2258}
2259
2260.open-modal-form .ssp_ct_form_programe{
2261 animation-name: animatetop;
2262 animation-duration: .4s;
2263 position:relative;
2264}
2265
2266label .reference-mark {
2267color:#78849e;
2268}
2269.lexicon-icon-asterisk {
2270 color:#78849e;
2271}
2272.lexicon-icon-reload {
2273 margin-left:10px;
2274}
2275.ssp_title_form_programe{
2276 font-size: 42px!important;
2277 color: #ffffff!important;
2278 font-family: "Montserrat",sans-serif;
2279 font-weight:600;
2280 text-align:left;
2281}
2282.ssp_subtitle_form_programe {
2283 margin-top:0px!important;
2284
2285}
2286.ssp_subtitle_form_programe{
2287 font-size: 20px!important;
2288 color: #ffffff!important;
2289 font-family: "Montserrat",sans-serif;
2290 font-weight:600;
2291 text-align:left;
2292}
2293.lfr-ddm-form-page {
2294background-color: #fff;
2295border-radius: 12px 12px 0px 0px;
2296padding: 35px 15px!important;
2297}
2298.ssp:not(.liferay-instance) .form-group label {
2299 color: #78849E;
2300 font: normal normal 600 16px/19px Montserrat;
2301 padding-bottom: 10px;
2302}
2303.lfr-ddm-form-page-description {
2304display: none!important;
2305}
2306.lfr-ddm-form-page-title {
2307display: none!important;
2308}
2309.lfr-ddm-form-submit {
2310background-color: #0380F0;
2311 text-align: center;
2312 float: none!important;
2313 border: 1px solid #0380F0;
2314 border-radius: 6px;
2315 font-size: 16px;
2316 width: 245px;
2317 height: 50px;
2318}
2319.lfr-ddm-form-pagination-controls {
2320background-color: #fff;
2321 text-align: center;
2322 border-radius: 0px 0px 12px 12px;
2323 padding-bottom: 25px;
2324}
2325.ddm-form-name {
2326display: none!important;
2327}
2328.ddm-form-description {
2329display: none!important;
2330}
2331.ddm-form-builder-app {
2332margin-top:35px;
2333}
2334.taglib-captcha {
2335 display: flex;
2336}
2337.input-text-wrapper {
2338 left: 20px;
2339}
2340.lfr-ddm-form-pagination-controls {
2341 padding-top:0px!important;
2342 display:flex;
2343 justify-content:center;
2344 align-items: center;
2345 flex-flow:column;
2346}
2347@media only screen and (max-width: 1024px) {
2348
2349.open-modal-form{
2350
2351 align-items: flex-start;
2352
2353}
2354
2355.ddm-form-builder-app {
2356 margin-top: 15px;
2357}
2358
2359.ssp_title_form_programe{
2360font-size: 34px!important;
2361line-height: 1.2!important;
2362}
2363.ssp_subtitle_form_programe{
2364font-size:18px!important;
2365}
2366.taglib-captcha {
2367 display:block;
2368}
2369.input-text-wrapper {
2370 left:0;
2371}
2372.ssp_ct_form_programe {
2373 padding:0px;
2374 max-width:100%;
2375 padding:40px 20px;
2376}
2377
2378[data-modal="close-form-modal"]{
2379
2380 right: 20px;
2381 top: 0;
2382
2383}
2384
2385}
2386
2387.ssp:not(.liferay-instance) a.btn.btn-success.disabled{
2388 pointer-events: none;
2389 opacity: 0.5 !important;
2390 color: #FFF !important;
2391 background-color: #4CBF69 !important;
2392 cursor: not-allowed;
2393 border: none !important;
2394 font-size: 0.9rem !important;
2395}
2396
2397.slick-list.draggable {
2398 height: auto !important;
2399}
2400
2401.ssp:not(.liferay-instance) .ssp-image-opacity {
2402
2403 opacity: 1;
2404 object-fit: cover;
2405 object-position: center;
2406
2407}
2408
2409.ssp-option-group {
2410 text-align: left;
2411 font: normal normal 600 15px/19px Montserrat;
2412 letter-spacing: 0px;
2413 color: #004A8C;
2414}
2415.ssp-option {
2416 text-align: left;
2417 font: normal normal normal 15px/19px Montserrat;
2418 letter-spacing: 0px;
2419 color: #656565;
2420}
2421@media only screen and (max-width: 768px){
2422 .ssp-option-group {
2423 font: normal normal 600 15px/19px Montserrat;
2424 }
2425 .ssp-option {
2426 font: normal normal normal 15px/19px Montserrat;
2427 }
2428}
2429
2430.open-modal-form.lfr-ddm__default-page-header{
2431 display:none;
2432}
2433
2434/* css para funcionalidade de híbrido */
2435
2436.ssp-emed__vantagens-content.livre span{
2437 color: #FF9057!important;
2438}
2439.ssp-emed__vantagens-content.livre a:hover {
2440 color: white;
2441 background-color: #FF9057!important;;
2442 border: 1px solid #FF9057!important;;
2443}
2444.ssp-emed__vantagens-content.tecnico span{
2445 color: #F7BD23!important;
2446}
2447.ssp-emed__vantagens-content.tecnico a:hover {
2448 color: white;
2449 background-color: #F7BD23!important;;
2450 border: 1px solid #F7BD23!important;;
2451}
2452.ssp-emed__vantagens-content.ensino-medio-tecnico span{
2453 color: #C761CB!important;
2454}
2455.ssp-emed__vantagens-content.ensino-medio-tecnico a:hover{
2456 color: white;
2457 background-color: #C761CB!important;;
2458 border: 1px solid #C761CB!important;;
2459}
2460.ssp-emed__vantagens-content.extensao span{
2461 color: #3ECCA6!important;
2462}
2463.ssp-emed__vantagens-content.extensao a:hover{
2464 color: white;
2465 background-color: #3ECCA6!important;
2466 border: 1px solid #3ECCA6!important;
2467}
2468
2469/* Transferencias EMED */
2470
2471.emed-transferencias-space{
2472 max-width: 772px;
2473}
2474
2475.card-transferencias-emed {
2476 text-align: left;
2477}
2478
2479.card-transferencias-emed .ssp-emed__card-slider-body{
2480 padding: 30px;
2481}
2482
2483.card-pre-inscricao {
2484 text-align: center;
2485}
2486
2487.card-pre-inscricao .ssp-emed__card-slider-body{
2488 justify-content: space-evenly;
2489}
2490
2491.footer-card-card-pre-inscricao{
2492 margin-top: 48px;
2493 }
2494
2495.card-transferencias-emed, .card-pre-inscricao{
2496 span, strong{
2497 font-size: 24px;
2498 }
2499 span{
2500 font-weight: 500;
2501 }
2502 strong{
2503 font-weight: 700;
2504 }
2505 .transferencias-emed-rodape{
2506 margin-top:25px;
2507 span{
2508 font-size:0.9rem;
2509 font-weight: 400;
2510 }
2511 }
2512}
2513
2514@media only screen and (max-width: 768px){
2515 .card-pre-inscricao {
2516 text-align: left;
2517 }
2518
2519 .footer-card-card-pre-inscricao{
2520 margin-top: 24px;
2521 }
2522
2523 .footer-card-card-pre-inscricao strong{
2524 margin-top: 24px;
2525 font-size: 24px!important;
2526 }
2527
2528 .card-pre-inscricao .ssp-emed__card-slider {
2529 width: 100%;
2530 max-width: 329px;
2531 min-height: 390px;
2532 margin: 0;
2533 }
2534
2535 .card-pre-inscricao .ssp-emed__card-slider:nth-child(n+2){
2536 margin: 12px;
2537 }
2538
2539 .card-transferencias-emed, .card-pre-inscricao{
2540 span, strong{
2541 font-size: 16px;
2542 }
2543 .ssp-emed__section__titleCard{
2544 flex-basis: 0;
2545 margin-bottom: 24px!important;
2546 align-items: center!important;
2547 }
2548
2549 .ssp-emed__section__titleCard i{
2550 font-size: 24px!important;
2551 }
2552
2553 .ssp-emed__section__titleCard div{
2554 font-size: 20px !important;
2555 }
2556 }
2557
2558 .slick-area__item.card-pre-inscricao{
2559 min-height: 390px!important;
2560 }
2561
2562 .card-transferencias-emed .ssp-emed__card-slider{
2563 margin: 0;
2564 }
2565
2566 .card-transferencias-emed .ssp-emed__card-slider{
2567 margin: 0;
2568 min-height: 300px;
2569 }
2570
2571 .card-transferencias-emed .col-md-12{
2572 padding: 0;
2573 }
2574
2575 .card-transferencias-emed .transferencias-emed-rodape span{
2576 font-size: 12px;
2577 }
2578
2579 .ssp-ofertas-emed__filtro-content .btn-filtro{
2580 width:156px !important;
2581 font-size:14px !important;
2582 }
2583
2584 #titulo-emed{
2585 text-transform: uppercase;
2586 }
2587
2588 .emed-transferencias-space div:nth-child(n+2){
2589 padding-left:0;
2590 }
2591
2592 .emed-transferencias-space .slick-area-emed--md-bleed{
2593 position: inherit;
2594 }
2595
2596}
2597
2598</style>
2599
2600
2601 <#assign
2602
2603 prefix = "ssp"
2604 nomeVocabularioTipoCurso = 'tipo-de-curso'
2605
2606
2607 nomeVocabularioUnidades = 'unidades'
2608
2609 nomeVocabularioFormato = 'formato'
2610
2611 nomeFormato = ""
2612 nomeVocabularioModalidade = 'modalidade'
2613
2614 nomeModalidade = ""
2615
2616 normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizer")
2617
2618 journalArticle = getJournalArticle()
2619 />
2620
2621 <#if journalArticle?contains("#erro#")>
2622 erro
2623 <#else>
2624
2625 <#assign
2626
2627 categories = getCategorias(journalArticle.getResourcePrimKey())
2628
2629 document = saxReaderUtil.read(journalArticle.getContent()).getRootElement()
2630
2631 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataEfetivaFTFieldSet']")
2632 dataEfetivaFTFieldSet = xPathSelector.selectSingleNode(document)
2633
2634 xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='dataEfetivaFT']")
2635 dataEfetiva = xPathSelector.selectSingleNode(document)
2636
2637 dataEfetivaSTR = dataEfetiva.elementText("dynamic-content")?string
2638
2639 articleId = journalArticle.getArticleId()
2640
2641 codigoFT = getStringValue(document,'codigoFT')
2642
2643 tituloComercial = journalArticle.getTitle()
2644
2645 objetivo = getStringValue(dataEfetivaFTFieldSet, 'objetivoComercial')
2646
2647 cargaHoraria = getStringValue(dataEfetivaFTFieldSet, 'cargaHorariaTotalFT')
2648
2649 oQueVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueVouAprenderComercial')
2650
2651 comoVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'comoVouAprenderComercial')
2652
2653 possoFazerEsteCursoComercial = getStringValue(dataEfetivaFTFieldSet, 'possoFazerEsteCursoComercial')
2654
2655 tereiCertificadoComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiCertificadoComercial')
2656
2657 tereiDiplomaComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiDiplomaComercial')
2658
2659 precisoEstagiarComercial = getStringValue(dataEfetivaFTFieldSet, 'precisoEstagiarComercial')
2660
2661 comoMeMatricularComercial = getStringValue(dataEfetivaFTFieldSet, 'comoMeMatricularComercial')
2662
2663 oQueMaisPrecisoSaberComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueMaisPrecisoSaberComercial')
2664
2665 normalizedModalidadeName = ""
2666
2667 />
2668
2669 <div style="display: none;">ElasticSearchNaoRetornarFiltro </div>
2670 <input type="hidden" name="codigoFT" value="${codigoFT}" />
2671 <input type="hidden" name="articleId" value="${articleId}" />
2672
2673 <input type="hidden" name="dataEfetivaSTR" value="${dataEfetivaSTR}" />
2674
2675 <input type="hidden" name="codUnidadeSelecionada" value="" />
2676
2677 <#list categories as category>
2678
2679 <#assign
2680 vocabulary = getVocabulary(category.getVocabularyId())
2681 />
2682
2683 <#if normalizer.normalize(vocabulary.getName()) == nomeVocabularioTipoCurso>
2684
2685 <#assign
2686 categoriaTipoCurso = category
2687 normalizedCategoryName = normalizer.normalize(category.getName())
2688 />
2689
2690 <input type="hidden" name="tipoCurso" value="${normalizedCategoryName}" />
2691
2692 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioUnidades>
2693
2694 <input type="hidden" name="unidades" value="${category.getCategoryId()}" data-unidade="${category.getName()}" />
2695
2696 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioModalidade>
2697
2698 <#assign
2699 categoriaModalidade = category
2700 normalizedModalidadeName = normalizer.normalize(category.getName())
2701
2702 />
2703 <input type="hidden" name="modalidadeName" value="${normalizedModalidadeName}" />
2704 <input type="hidden" name="modalidades" value="${normalizedModalidadeName}" />
2705
2706 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioFormato>
2707 <#assign
2708 nomeFormato = category.getName()
2709 />
2710
2711
2712 <#assign idFormato = category.getCategoryId() />
2713 <#if nomeFormato == "Presencial + EAD" >
2714 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="Presencial + EAD" />
2715 <#else>
2716 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="${category.getName()}" />
2717 </#if>
2718 </#if>
2719 </#list>
2720
2721 <#assign xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='imagemComercial']")>
2722
2723 <#if xPathSelector.selectSingleNode(dataEfetivaFTFieldSet)?? >
2724
2725 <#assign imagemStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()>
2726 <#if imagemStr?contains("{") >
2727 <#attempt>
2728 <#assign
2729 imagemJson = jsonFactoryUtil.createJSONObject(imagemStr)
2730 imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId'))
2731 dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")
2732 dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
2733 fileEntry = dl.getFileEntry(imagemId)
2734 imagemAlt = imagemJson.get('alt')
2735 imagemUrl = dlURLHelper.getDownloadURL(fileEntry, fileEntry.getFileVersion(), themeDisplay,null)
2736 />
2737 <#recover>
2738 <#assign
2739 imagemAlt = ""
2740 imagemUrl = ""
2741 />
2742 </#attempt>
2743 <#else>
2744 <#assign imagemUrl = "">
2745 </#if>
2746
2747 <#else>
2748 <#assign imagemUrl = "">
2749 </#if>
2750
2751
2752 <#assign
2753
2754 URLCodec = staticUtil["com.liferay.portal.kernel.util.URLCodec"]
2755 HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"]
2756 StringPool = staticUtil["com.liferay.petra.string.StringPool"]
2757 dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
2758
2759 xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='quaisMateriaisComercial']")
2760 quaisMateriaisComercialPDFStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()
2761 />
2762
2763 <#if quaisMateriaisComercialPDFStr?contains('classPK') >
2764
2765 <#assign
2766
2767 PDFJson = jsonFactoryUtil.createJSONObject(quaisMateriaisComercialPDFStr)
2768 classPKNumber = PDFJson.classPK?number
2769 fileEntry = dlFileEntryLocalService.getDLFileEntry(classPKNumber)
2770 folderId = fileEntry.getFolderId()
2771 title = fileEntry.getTitle()
2772
2773 quaisMateriaisComercialPDFUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + folderId + StringPool.SLASH + URLCodec.encodeURL(HtmlUtil.unescape(title))
2774 />
2775
2776 <#else>
2777 <#assign quaisMateriaisComercialPDFUrl = "">
2778 </#if>
2779
2780 <#function getFirstArticleStructure categoryId structureName>
2781 <#attempt>
2782 <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search")>
2783 <#assign companyId = themeDisplay.getCompanyId()>
2784 <#assign groupId = themeDisplay.getScopeGroupId()>
2785 <#assign articles = searchImpl.findArticlesByCategoryIds(companyId, groupId, structureName, (categoryId gt 0)?then([categoryId],[]), true, 0, 1)>
2786 <#if articles?size gt 0>
2787 <#return articles?first>
2788 </#if>
2789 <#return ''>
2790 <#recover>
2791 <#return ''>
2792 </#attempt>
2793 </#function>
2794
2795
2796 <#assign
2797 nomeTipoCurso = categoriaTipoCurso.getName()
2798 nomeCategoriaTipoCurso = categoriaTipoCurso.getName()
2799 idTipoCurso = categoriaTipoCurso.getCategoryId()
2800 />
2801 <input type="hidden" name="nomeCategoriaTipoCurso" value="${nomeCategoriaTipoCurso}" />
2802
2803 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
2804
2805 <#assign
2806 nomeTipoCurso = categoriaTipoCurso.getName()
2807 />
2808
2809 <input type="hidden" name="idTipoCurso" value="${idTipoCurso}" />
2810
2811 <#elseif (nomeTipoCurso?contains("cnico") && !nomeTipoCurso?contains("EAD") ) || nomeTipoCurso?contains("Livre") >
2812
2813 <#assign
2814 nomeTipoCurso = "Cursos "+ categoriaTipoCurso.getName() + "s"
2815 />
2816
2817 <#else>
2818 <#assign
2819 nomeTipoCurso = categoriaTipoCurso.getName()
2820 />
2821 <#assign nomeTipoCurso = categoriaTipoCurso.getName()/>
2822
2823 </#if>
2824
2825 <#-- Caso o curso seja do formato hibrido, busca o webcontent da pasta Onde as aulas vão acontecer - hibrido -->
2826 <#if nomeFormato == "Presencial + EAD">
2827 <#assign
2828 hibridoStructure = getFirstArticleStructure(idFormato,"formato-hibrido")
2829 documentHibrido = saxReaderUtil.read(hibridoStructure.getContent())
2830 rootElement = documentHibrido.getRootElement()
2831 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoFormatoHibrido']")
2832 />
2833 <#if xPathSelector.selectSingleNode(rootElement)?? >
2834 <#assign txtHibrido = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2835 <input type="hidden" name="textoFormatoHibrido" value="${txtHibrido}"/>
2836 </#if>
2837 </#if>
2838
2839
2840 <#-- dados de compartilhamento -->
2841 <@liferay_util["html-top"]>
2842 <meta name="image" property="og:image" content="${imagemUrl}">
2843 <meta property="og:image:width" content="1024">
2844 </@>
2845 <#-- dados de compartilhamento -->
2846
2847
2848 <#assign
2849 webContentServiceUtil = serviceLocator.findService("br.senac.services.service.WebContentServiceUtil")
2850
2851 temasMercadologicos = webContentServiceUtil.getTemasPorArticleId(themeDisplay.getScopeGroupId(), journalArticle)
2852 categoriesIdiomas = temasMercadologicos?filter(c -> c.getName()?lower_case?contains("idioma"))
2853 hasIdiomas = categoriesIdiomas?has_content
2854 hasEMED = normalizedModalidadeName?contains("ensino-medio")
2855 />
2856
2857 <#function getManutencao>
2858
2859 <#assign manutencaoStructure = getFirstArticleStructure(idTipoCurso,"manutencoes") />
2860 <#if manutencaoStructure == "">
2861 <#return {"bolsa":"", "compra":"", "rodape":""} />
2862 </#if>
2863 <#assign
2864 txtBolsa = ""
2865 txtCompra = ""
2866 txtRodape = ""
2867 content = saxReaderUtil.read(manutencaoStructure.getContent())
2868 rootElement = content.getRootElement()
2869 />
2870 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoBolsa']") />
2871 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" >
2872 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoBolsa']") />
2873 <#assign txtBolsa = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2874 </#if>
2875 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoCompra']") />
2876 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" >
2877 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoCompra']") />
2878 <#assign txtCompra = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2879 </#if>
2880 <#if txtCompra != "" || txtBolsa != "">
2881 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoRodape']") />
2882 <#assign txtRodape = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2883 </#if>
2884
2885 <#return {"bolsa": txtBolsa, "compra": txtCompra, "rodape": txtRodape} />
2886
2887 </#function>
2888
2889 <#assign manutencao = getManutencao() />
2890 <input type="hidden" id="manutencao-compra" value="${manutencao.compra}" />
2891 <input type="hidden" id="manutencao-bolsa" value="${manutencao.bolsa}" />
2892
2893 <div class="${prefix}-header-curso__image">
2894 <#if imagemUrl?contains(".webp")>
2895 <#-- Remove midias adaptaveis -->
2896 <picture>
2897 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> loading="lazy">
2898 </picture>
2899 <#else>
2900 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> loading="lazy">
2901 </#if>
2902 <div class="${prefix}-header-curso__tag-formato bg-nivel-${normalizedCategoryName}">
2903 <#if hasIdiomas>
2904 <span>${nomeTipoCurso}</span>
2905 <#else>
2906 <span>${nomeTipoCurso} | ${nomeFormato}</span>
2907 </#if>
2908 </div>
2909 </div>
2910
2911 <section id="curso-info">
2912 <div class="ssp-card-detalhe-curso__container">
2913
2914 <div class="ssp-card-detalhe-curso">
2915
2916 <div class="ssp-card-detalhe-curso__tag-color-tipo bg-nivel-${normalizedCategoryName}"></div>
2917
2918 <div class="container">
2919
2920 <#if nomeFormato?contains("ao-vivo") >
2921 <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>
2922
2923 </#if>
2924
2925 <div class="ssp-card-detalhe-curso__content">
2926 <div>
2927
2928 <!-- <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
2929
2930 <p class="ssp-txt-emed__inscricoes-aberta">Inscrições abertas</p>
2931
2932 </#if> -->
2933
2934 <!-- rever a lógica da chama de inscricoes abertas -->
2935
2936 <h1 class="ssp-card-detalhe-curso__title">${tituloComercial}</h1>
2937 <input type="hidden" name="tituloComercial" value="${tituloComercial}" />
2938
2939 <div class="ssp-card-detalhe-curso__description">${objetivo}</div>
2940 </div>
2941 <div class="ssp-card-detalhe-curso__secunday-info-content">
2942
2943 <#if nomeFormato?contains("ao-vivo") >
2944 <span class="d-md-none">
2945 <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#" style="color: #ff9057;">${categoriaTipoCurso.getName()}</a>
2946 <#if !hasIdiomas>
2947 <span> | ${nomeFormato}</span>
2948 </#if>
2949 </span>
2950
2951 <#else>
2952 <span class="d-md-none">
2953 <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#">${categoriaTipoCurso.getName()}</a>
2954 <#if !hasIdiomas>
2955 <span> | ${nomeFormato}</span>
2956 </#if>
2957 </span>
2958
2959 </#if>
2960
2961 <p class="ssp-card-detalhe-curso__secundary-info-carga-horaria">${cargaHoraria} horas</p>
2962 </div>
2963 </div>
2964 <div class="ssp-saiba-mais-curso-accordion">
2965
2966 <#if (possoFazerEsteCursoComercial?length > 0)>
2967 <div class="ssp-saiba-mais-curso-accordion__body">
2968 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Posso fazer este curso?</div>
2969 <div class="ssp-saiba-mais-curso-accordion__contents">${possoFazerEsteCursoComercial}</div>
2970 </div>
2971
2972 </#if>
2973
2974 <#if (oQueVouAprenderComercial?length > 0) >
2975 <div class="ssp-saiba-mais-curso-accordion__body">
2976 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que vou aprender?</div>
2977 <div class="ssp-saiba-mais-curso-accordion__contents" id="plano-curso">${oQueVouAprenderComercial}</div>
2978 </div>
2979 </#if>
2980
2981 <#if (comoVouAprenderComercial?length > 0)>
2982 <div class="ssp-saiba-mais-curso-accordion__body">
2983 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como vou aprender?</div>
2984 <div class="ssp-saiba-mais-curso-accordion__contents">${comoVouAprenderComercial}</div>
2985 </div>
2986 </#if>
2987
2988
2989 <div class="ssp-saiba-mais-curso-accordion__body">
2990 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Quais materiais vou precisar?</div>
2991 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
2992 <div class="ssp-saiba-mais-curso-accordion__contents">
2993 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.
2994 </div>
2995 <#else>
2996 <#if (quaisMateriaisComercialPDFUrl?length > 0)>
2997 <div class="ssp-saiba-mais-curso-accordion__contents">
2998 <a href="${quaisMateriaisComercialPDFUrl}" target="_blank"><i class="fa fa-download" aria-hidden="true"></i> Confira os materiais que você precisará.</a>
2999 </div>
3000 <#else>
3001 <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>
3002 </#if>
3003 </#if>
3004 </div>
3005
3006 <#if (tereiDiplomaComercial?length > 0)>
3007 <div class="ssp-saiba-mais-curso-accordion__body">
3008 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei diploma?</div>
3009 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiDiplomaComercial}</div>
3010 </div>
3011 </#if>
3012
3013 <#if (tereiCertificadoComercial?length > 0)>
3014 <div class="ssp-saiba-mais-curso-accordion__body">
3015 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei certificado?</div>
3016 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiCertificadoComercial}</div>
3017 </div>
3018 </#if>
3019
3020 <#if (comoMeMatricularComercial?length > 0)>
3021 <div class="ssp-saiba-mais-curso-accordion__body">
3022 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como me matricular?</div>
3023 <div class="ssp-saiba-mais-curso-accordion__contents">${comoMeMatricularComercial}</div>
3024 </div>
3025 </#if>
3026
3027 <#if (precisoEstagiarComercial?length > 0)>
3028 <div class="ssp-saiba-mais-curso-accordion__body">
3029 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Preciso estagiar?</div>
3030 <div class="ssp-saiba-mais-curso-accordion__contents">${precisoEstagiarComercial}</div>
3031 </div>
3032 </#if>
3033
3034
3035 <#if (oQueMaisPrecisoSaberComercial?length > 0)>
3036 <div class="ssp-saiba-mais-curso-accordion__body">
3037 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
3038 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Estudo em outra escola, como funciona a transferência?</div>
3039 <#else>
3040 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que mais preciso saber?</div>
3041 </#if>
3042 <div class="ssp-saiba-mais-curso-accordion__contents">${oQueMaisPrecisoSaberComercial}</div>
3043 </div>
3044 </#if>
3045
3046 <!-- Info para EMED -->
3047
3048 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
3049
3050 <div class="ssp-emed__vantagens-content">
3051
3052 <p>Conheça <span>mais vantagens</span> do Ensino Médio Técnico no Senac.</p>
3053 <a href="/ensino-medio-tecnico" class="btn">Saiba mais</a>
3054
3055 </div>
3056
3057 <#elseif nomeFormato?contains("Presencial") && nomeFormato?contains("EAD") && !nomeTipoCurso?contains("Idioma")>
3058
3059 <!-- Info para híbrido -->
3060
3061 <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3062
3063 <p>Quer saber mais sobre nossos <span>cursos com aulas presenciais e a distância</span>?</p>
3064 <a href="/presencial-ead" class="btn">Saiba mais</a>
3065
3066 </div>
3067
3068 <#else>
3069
3070 <!-- <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3071
3072 <p>Conheça <span>mais vantagens</span>?</p>
3073 <a href="#" class="btn">Saiba mais</a>
3074
3075 </div> -->
3076
3077 </#if>
3078
3079
3080 <!-- Slider para cursos de Cozinheiro e Garçom -->
3081
3082 <#if codigoFT=="14125">
3083
3084 <div>
3085
3086 <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>
3087
3088
3089 <div class="slider-passo-passo__cursos-cozinha">
3090
3091 <div class="ssp-passo-passo-cozinheiro_card">
3092
3093 <div>
3094
3095 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3096
3097 <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>
3098
3099 </div>
3100
3101
3102 </div>
3103
3104 <div class="ssp-passo-passo-cozinheiro_card">
3105
3106 <div>
3107
3108 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3109
3110 <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 10 inscrições por vaga.</p>
3111
3112 </div>
3113
3114 </div>
3115
3116 <div class="ssp-passo-passo-cozinheiro_card">
3117
3118 <div>
3119
3120 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3121
3122 <p class="ssp-passo-passo-cozinheiro_card-txt">
3123 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.
3124 </p>
3125
3126
3127 </div>
3128
3129 </div>
3130
3131 <div class="ssp-passo-passo-cozinheiro_card">
3132
3133 <div>
3134
3135 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3136
3137 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários.
3138 </p>
3139
3140
3141 </div>
3142
3143 </div>
3144
3145 <div class="ssp-passo-passo-cozinheiro_card">
3146
3147 <div>
3148
3149 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3150
3151 <p class="ssp-passo-passo-cozinheiro_card-txt">
3152 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.
3153 </p>
3154
3155 </div>
3156
3157 </div>
3158
3159 <div class="ssp-passo-passo-cozinheiro_card">
3160
3161 <div>
3162
3163 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3164
3165 <p class="ssp-passo-passo-cozinheiro_card-txt">
3166 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.
3167 </p>
3168
3169 </div>
3170
3171 </div>
3172
3173 <div class="ssp-passo-passo-cozinheiro_card">
3174
3175 <div>
3176
3177 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3178
3179 <p class="ssp-passo-passo-cozinheiro_card-txt">
3180 Teve aprovação em todas as etapas? Parabéns!
3181
3182 Sua jornada de transformação profissional
3183
3184 começará com o início das aulas. Mas se não
3185
3186 conseguiu dessa vez, não desanime. Sempre estamos com
3187
3188 vagas abertas para diversos cursos.
3189 </p>
3190
3191 </div>
3192
3193 </div>
3194
3195
3196 </div>
3197
3198 </div>
3199
3200 <#elseif codigoFT=="15390" >
3201
3202 <div>
3203
3204 <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>
3205
3206 <div class="slider-passo-passo__cursos-cozinha">
3207
3208 <div class="ssp-passo-passo-cozinheiro_card">
3209
3210 <div>
3211
3212 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3213
3214 <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>
3215
3216 </div>
3217
3218
3219 </div>
3220
3221 <div class="ssp-passo-passo-cozinheiro_card">
3222
3223 <div>
3224
3225 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3226
3227 <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 10 inscrições por vaga.</p>
3228
3229 </div>
3230
3231 </div>
3232
3233 <div class="ssp-passo-passo-cozinheiro_card">
3234
3235 <div>
3236
3237 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3238
3239 <p class="ssp-passo-passo-cozinheiro_card-txt">
3240 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.
3241 </p>
3242
3243
3244 </div>
3245
3246 </div>
3247
3248 <div class="ssp-passo-passo-cozinheiro_card">
3249
3250 <div>
3251
3252 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3253
3254 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários.
3255 </p>
3256
3257
3258 </div>
3259
3260 </div>
3261
3262 <div class="ssp-passo-passo-cozinheiro_card">
3263
3264 <div>
3265
3266 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3267
3268 <p class="ssp-passo-passo-cozinheiro_card-txt">
3269 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.
3270 </p>
3271
3272 </div>
3273
3274 </div>
3275
3276 <div class="ssp-passo-passo-cozinheiro_card">
3277
3278 <div>
3279
3280 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3281
3282 <p class="ssp-passo-passo-cozinheiro_card-txt">
3283 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.
3284 </p>
3285
3286 </div>
3287
3288 </div>
3289
3290 <div class="ssp-passo-passo-cozinheiro_card">
3291
3292 <div>
3293
3294 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3295
3296 <p class="ssp-passo-passo-cozinheiro_card-txt">
3297 Teve aprovação em todas as etapas? Parabéns!
3298
3299 Sua jornada de transformação profissional
3300
3301 começará com o início das aulas. Mas se não
3302
3303 conseguiu dessa vez, não desanime. Sempre estamos com
3304
3305 vagas abertas para diversos cursos.
3306 </p>
3307
3308 </div>
3309
3310 </div>
3311
3312
3313 </div>
3314
3315 </div>
3316
3317 </#if>
3318
3319 <!-- Final Slider para cursos de Cozinheiro e Garçom -->
3320
3321 </div>
3322 </div>
3323 </div>
3324 </div>
3325 </section>
3326 <#assign
3327 dNoneSelectUnidade = ''
3328 mostrarUnidades = !nomeFormato?contains("ao-vivo")
3329 isEMED = normalizedCategoryName?contains("ensino-medio-tecnico")
3330 isAprendizagem = normalizedCategoryName?contains("jovem-aprendiz")
3331 />
3332
3333 <#if nomeFormato?contains("ao-vivo") >
3334 <#assign dNoneSelectUnidade = 'd-none' />
3335 </#if>
3336
3337 <#-- Obter data matricula emed -->
3338 <#if isEMED>
3339 <#function getMatriculaEMED >
3340 <#assign emedTags = getFirstArticleStructure(0,"emed-tags")
3341 document = saxReaderUtil.read(emedTags.getContent())
3342 rootElement = document.getRootElement()
3343 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataInicioPeriodoMatricula']") />
3344 <#if xPathSelector.selectSingleNode(rootElement)?? >
3345 <#assign dataInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3346 </#if>
3347 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='horaInicioMatricula']") />
3348 <#if xPathSelector.selectSingleNode(rootElement)?? >
3349 <#assign horaInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3350 </#if>
3351
3352 <#setting time_zone="America/Sao_Paulo">
3353 <#assign today = .now?datetime />
3354 <#assign emeddatetime = (dataInicio + " " + horaInicio)?datetime["yyyy-MM-dd HH:mm"] />
3355 <#assign matriculaAberta = today gt emeddatetime />
3356
3357 <#return {"dataInicio" : dataInicio, "horaInicio" : horaInicio, "aberta" : matriculaAberta}>
3358 </#function>
3359
3360 <#assign matriculaEMED = getMatriculaEMED() />
3361
3362 </#if>
3363
3364 <#if isEMED || isAprendizagem>
3365 <section class="ssp-section-selecione-unidade ssp-section ${dNoneSelectUnidade}" style="background:#2B2E41">
3366 <div class="container">
3367
3368 <div class="ssp-container-selecione-unidade" style="max-width: 815px; margin: auto;">
3369 <div class="ssp-container_ofertas__title">
3370 <h3 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom">
3371
3372 Selecione uma unidade para conhecer as próximas turmas:
3373
3374 </h3>
3375 </div>
3376
3377 <div class="ssp-container__form-select">
3378 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas">
3379 <option value="">Selecione uma unidade</option>
3380 </select>
3381 </div>
3382
3383 </div>
3384
3385 <div class="ssp-ofertas__box-endereco-unidade">
3386 <i class="icon-map-adress"></i>
3387 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3388 </div>
3389
3390 </div>
3391
3392 </section>
3393 <#else>
3394 <section class="ssp-section-selecione-unidade ssp-section" style="background:#2B2E41">
3395 <div class="container">
3396 <div class="ssp-container-selecione-unidade ${dNoneSelectUnidade} row no-gutters mb-lg-8">
3397 <div class="ssp-container_ofertas__title">
3398 <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>
3399 </div>
3400 </div>
3401 <div class="row ssp-filters-px justify-content-center">
3402 <div class="col-12 col-lg ${dNoneSelectUnidade} px-md-0 order-1">
3403 <div class="ssp-container-selecione-unidade row no-gutters">
3404 <div class="col-12">
3405 <div class="ssp-container__form-select mx-auto">
3406 <label for="unidades-ofertas" class="ssp-switch-label ssp-switch-label-section mx-0 d-none d-lg-block">Selecione uma unidade:</label>
3407 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas"></select>
3408 </div>
3409 </div>
3410 </div>
3411 </div>
3412
3413 <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;">
3414 <div class="row no-gutters ssp-switch-label ssp-switch-label-section mx-0">Filtre por:</div>
3415 <div class="row no-gutters mt-4">
3416 <#assign
3417 mostrarFiltroInscricao = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || nomeTipoCurso?contains("Livre") || nomeTipoCurso?contains("Extensão")
3418 mostrarFiltroBolsa = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || (nomeTipoCurso?contains("Livre") && !normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))
3419 textoFiltroCompra = (nomeTipoCurso?contains("Livre") && normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))?then("Matrículas abertas", "Comprar agora")
3420 />
3421
3422
3423 <#if mostrarFiltroInscricao && mostrarFiltroBolsa>
3424 <div class="ssp-switch-divider d-md-none my-4"></div>
3425 </#if>
3426
3427 <#if mostrarFiltroInscricao>
3428 <div class="col-12 col-lg">
3429 <div class="d-flex justify-content-between justify-content-lg-start">
3430 <label class="ssp-switch order-2 order-lg-1">
3431 <input type="checkbox" id="chkInscricao">
3432 <span class="ssp-switch-slider round"></span>
3433 </label>
3434 <label for="chkInscricao" class="ssp-switch-label order-1 order-lg-2">${textoFiltroCompra}</label>
3435 </div>
3436 </div>
3437 </#if>
3438
3439
3440 <#if mostrarFiltroBolsa>
3441 <div class="col-12 col-lg">
3442 <div class="d-flex justify-content-between justify-content-lg-start">
3443 <label class="ssp-switch order-2 order-lg-1">
3444 <input type="checkbox" id="chkBolsa">
3445 <span class="ssp-switch-slider ssp-switch-slider-secondary round"></span>
3446 </label>
3447 <label for="chkBolsa" class="ssp-switch-label order-1 order-lg-2">Bolsas de estudo</label>
3448 </div>
3449 </div>
3450 </#if>
3451 </div>
3452 </div>
3453
3454 <div class="col-12 order-2 order-lg-3">
3455 <div class="row ${mostrarUnidades?then('text-center text-lg-left', 'text-center')}">
3456 <div id="msgFiltroAplicado" class="col-12 ssp-switch-label-message" style="display: none;">
3457 <div class="row no-gutters">
3458 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'ml-auto')}">Filtro aplicado com sucesso. </span>
3459 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'mr-auto')}">Confira o resultado.</span>
3460 </div>
3461 </div>
3462 </div>
3463 </div>
3464 </div>
3465
3466 <div class="ssp-ofertas__box-endereco-unidade ${dNoneSelectUnidade}">
3467 <i class="icon-map-adress"></i>
3468 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3469 </div>
3470
3471 </div>
3472
3473 </section>
3474 </#if>
3475
3476
3477 <!-- EMED -->
3478 <section class="ssp-ofertas-emed__section d-none">
3479
3480 <h2 class="title-section-white" id="titulo-emed"></h2>
3481
3482 <div class="ssp-ofertas-emed__filtro-content container">
3483
3484 <button type="button" value="0010" class="btn btn-filtro btn--filtro-ativo">Turmas - 1º ano</button>
3485
3486 <button type="button" value="0" class="btn btn-filtro">Transferências</button>
3487
3488 </div>
3489
3490 <div class="ssp-ofertas-emed__card-container">
3491
3492 <div class="ssp-slick-ofertas-emed">
3493
3494 </div>
3495
3496 </div>
3497
3498 </section>
3499
3500 <!-- FIM EMED -->
3501
3502 <section id="ssp-section-response" class="ssp-section" style="background: #2a2e43; position: relative;">
3503
3504 <div id="turmas-container" class="container">
3505
3506 <div id="informe-novas-turmas">
3507 <div style="display: flex; flex-wrap: nowrap;">
3508
3509 <a class="prev-mobile d-lg-none d-xl-none nextPrevOpacity" href="#" >
3510 <i class="fas fa-chevron-left"></i>
3511 </a>
3512
3513 <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>
3514
3515 <a href="#" class="next-mobile d-lg-none d-xl-none" >
3516 <i class="fas fa-chevron-right"></i>
3517 </a>
3518
3519 </div>
3520
3521
3522 <div class="oferta-slick-area oferta-slick-area--md-bleed slider-container">
3523
3524 </div>
3525 </div>
3526
3527 <#if !isEMED>
3528 <div class="ssp-card-oferta-curso__sem-vaga d-none" style="margin: auto;">
3529
3530 <h2 class="ssp-card-oferta-curso__sem-vaga-title">
3531 Estude com a gente na próxima turma!
3532 </h2>
3533
3534 <p class="ssp-card-oferta-curso__sem-vaga-description">
3535 Registre seu interesse e avisaremos você quando surgirem novas vagas.
3536 </p>
3537 </div>
3538 <#else>
3539
3540 <div class="card-transferencias-emed container p-0 d-none emed-transferencias-space">
3541 <div>
3542 <div class="col-md-12 col-xs-12 pb-10">
3543 <div>
3544 <div class="slick-area__item">
3545
3546 <div class="ssp-emed__card-slider">
3547
3548 <div class="ssp-emed__card-slider-body">
3549 <h2 class="ssp-emed__section__titleCard">
3550 <i class="fal fa-users-class"></i>
3551 <div>Turmas</div>
3552 </h2>
3553 <div style="display:grid;gap:20px;">
3554 <span class="emed_transferencia_texto">Para saber mais sobre vagas de transferências para 1º e 2º ano para estudantes do Senac e de outras escolas, entre em contato com a unidade de interesse para checar a disponibilidade.</span>
3555 <span></span>
3556 </div>
3557 </div>
3558
3559 </div>
3560
3561 </div>
3562 </div>
3563 </div>
3564 </div>
3565 </div>
3566
3567 <#if matriculaEMED.aberta> <div class="sem-vaga-emed container p-0 d-none">
3568 <#else> <div class="sem-vaga-emed container p-0 d-none emed-transferencias-space">
3569 </#if>
3570 <div>
3571 <div class="col-md-12 col-xs-12 pb-10">
3572
3573 <!--slick slider-->
3574 <div class="slick-area-emed slick-area-emed--md-bleed">
3575
3576 <#if matriculaEMED.aberta>
3577 <div class="slick-area__item">
3578
3579 <div class="ssp-emed__card-slider">
3580
3581 <div class="ssp-emed__card-slider-body">
3582 <h2 class="ssp-emed__section__titleCard">
3583 <i class="fal fa-users-class"></i>
3584 <div><lfr-editable type="rich-text">Turmas</lfr-editable></div>
3585 </h2>
3586 <lfr-editable type="rich-text">
3587 <div class="ssp-emed__section__introCard"><strong>Estude com a gente na próxima turma!</strong></div>
3588 <div class="ssp-emed__section__textCard">
3589 <span class="texto">
3590 Registre seu interesse e avisaremos você sobre a abertura das inscrições para o próximo ano.
3591 </span>
3592 <span class="ssp-emed__iconWrapper animate__animated animate__fadeOutRight animate__infinite"><i
3593 class="fas fa-chevron-right"></i></span>
3594 </div>
3595 </lfr-editable>
3596 </a>
3597 </div>
3598
3599 </div>
3600
3601 </div>
3602
3603 <div class="slick-area__item">
3604
3605 <div class="ssp-emed__card-slider">
3606 <div class="ssp-emed__card-slider-body">
3607
3608 <h2 class="ssp-emed__section__titleCard">
3609 <i class="far fa-envelope"></i>
3610 <div><lfr-editable id="emed-precos-title" type="rich-text">Registro de Interesse</lfr-editable></div>
3611 </h2>
3612 <lfr-editable id="txt_emed_boleto" type="rich-text">
3613 <div class="ssp-emed__section__introCardCTA">
3614 Quer receber um aviso sobre as turmas do próximo ano?
3615 </div>
3616 </lfr-editable>
3617 </a>
3618 <a class="ssp-emed__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_10"
3619 id="btnOptin" href="javascript:;">Sim, me avise.</a>
3620 </div>
3621 </div>
3622 </div>
3623 <#else>
3624 <#-- pre inscricao emed -->
3625 <div class="slick-area__item card-pre-inscricao">
3626
3627 <div class="ssp-emed__card-slider">
3628
3629 <div class="ssp-emed__card-slider-body">
3630 <h2 class="ssp-emed__section__titleCard">
3631 <i class="fal fa-users-class"></i>
3632 <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>
3633 </h2>
3634 <lfr-editable type="rich-text" style="text-align: left;">
3635 <div class="ssp-emed__section__introCard" style="margin: 0;"><strong class="ssp-p-g" style="font-weight: 700;">Inscrições para bolsas</strong></div>
3636 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
3637 <span class="ssp-p-g texto">
3638 A partir de 4/8, às 12h
3639 </span>
3640 </lfr-editable>
3641 <hr style="margin: 24px 0; background: #FFF;"/>
3642 <lfr-editable type="rich-text" style="text-align: left;">
3643 <div class="ssp-emed__section__introCard" style="margin: 0;"><strong class="ssp-p-g" style="font-weight: 700;">Matrículas</strong></div>
3644 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
3645 <span class="ssp-p-g texto">
3646 A partir de 18/8, às 12h
3647 </span>
3648 </div>
3649 </lfr-editable>
3650 </a>
3651 </div>
3652
3653 </div>
3654 <!-- <div class="ssp-emed__card-slider">
3655
3656 <div class="ssp-emed__card-slider-body">
3657 <h2 class="ssp-emed__section__titleCard">
3658 <i class="fal fa-users-class"></i>
3659 <div><lfr-editable id="emed-aulas-title" type="rich-text">Turmas</lfr-editable></div>
3660 </h2>
3661 <lfr-editable id="txt_emed_aulas" type="rich-text">
3662 <div>
3663 <strong>Matrículas e inscrições para bolsas de estudo:</strong><br/>
3664 <span style="font-weight: 400;">
3665 a partir de ${matriculaEMED.dataInicio?split("-")?reverse?join("/")}, às ${matriculaEMED.horaInicio?split(":")?first} horas
3666 <#if matriculaEMED.horaInicio?split(":")?last != "00">
3667 e ${matriculaEMED.horaInicio?split(":")?last} minutos
3668 </#if>
3669 </span>
3670 </div>
3671
3672 <div class="footer-card-card-pre-inscricao">
3673 <strong>
3674 Estude com a gente na próxima turma!<br/>
3675 Esperamos por você!
3676 </strong>
3677 </div>
3678 </lfr-editable>
3679 </a>
3680 </div> -->
3681
3682 </div>
3683
3684 </div>
3685
3686 </#if>
3687
3688 </div>
3689 <!--/slick slider-->
3690
3691 </div>
3692 </div>
3693 </div>
3694
3695 </#if>
3696 <div class="oferta-slick-area_modal">
3697 </div>
3698
3699 <#if manutencao.rodape != "">
3700 <p class="ssp-card-oferta-curso__mensagem-legal">${manutencao.rodape}</p>
3701 <#else>
3702 <#if isEMED>
3703 <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>
3704 <#else>
3705 <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>
3706 </#if>
3707 </#if>
3708
3709 </div>
3710
3711 <div id="ssp-abrir-pagina-bolsa" class="ssp-card-duvida__bolsa-estudo d-none" style="margin-top: 44px;">
3712
3713 <p>Tem dúvidas sobre bolsas de estudo?</p>
3714 <a href="/bolsas-de-estudo">Saiba como funciona</a>
3715
3716 </div>
3717
3718
3719 </section>
3720
3721 <section id="section-registro-interesse" class="ssp-section-novas-turmas">
3722
3723 <div class="container">
3724
3725 <div class="ssp-aviso-novas-turmas__content">
3726
3727 <!-- <div class="pb-sm-5 pb-md-5" > -->
3728 <div>
3729
3730 <p class="ssp-aviso-novas-turmas__title">Receba um aviso por e-mail se abrirem novas turmas.</p>
3731 <!-- p class="ssp-aviso-novas-turmas__description">Selecione a unidade e registre seu interesse.</p -->
3732
3733 </div>
3734
3735 <!--
3736 <div class="ssp-container__form-select">
3737
3738 <select class="form-control select-large select-registro-interesse" id="select-registro-interesse">
3739 <option value="">Selecione uma unidade</option>
3740 </select>
3741
3742 </div>
3743 -->
3744 <div class="ssp-btn-group__content-teste">
3745
3746 <button type="button" class="btn btn-primary btn-custom" id="btn-aviso-novas-turmas">Registrar interesse</button>
3747
3748 </div>
3749
3750
3751
3752 </div>
3753
3754
3755 </div>
3756
3757
3758 </section>
3759
3760 <section id="modal-backpack-error" class="ssp-modal-registro-interesse d-none">
3761
3762 <div class="ssp-card-msg-erro">
3763
3764 <div class="ssp-card-msg-sucesso__content">
3765 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
3766 <p>Houve um erro ao inserir curso na mochila!</p>
3767 <p>Por favor, tente novamente!</p>
3768 </div>
3769
3770 <div>
3771 <button id="btn-voltar-modal-backpack-error" class="btn btn-nivel ssp-card-msg-sucesso__btn">Voltar</button>
3772 </div>
3773
3774 </div>
3775
3776 </section>
3777
3778 <section id="modal-backpack-success" class="ssp-modal-registro-interesse d-none">
3779
3780 <div class="ssp-modal-mochila-curso">
3781
3782 <div class="ssp-modal-mochila-curso__header">
3783
3784 <button class="modal-btn-close" type="button">
3785
3786 <i class="fal fa-times"></i>
3787
3788 </button>
3789
3790 <h2 class="modal-title">Curso adicionado à mochila!</h2>
3791 <p class="modal-subtitle">Você incluiu na sua mochila de compras o curso
3792 <span id="modal-backpack-success__nome-curso"></span>
3793 </p>
3794
3795 </div>
3796
3797 <div class="ssp-modal-mochila-curso__body">
3798
3799 <p>A sua vaga só é garantida nesta turma quando você finaliza a
3800 compra. Deseja concluir agora?</p>
3801
3802 </div>
3803
3804 <div class="ssp-modal-mochila-curso__block-btn-items block-btn-items">
3805
3806 <a class="btn-finalizar-compra btn-mochila-finalizar-compra-success" href="#">
3807 Finalizar compra
3808 </a>
3809
3810 <button class="btn-continuar-site btn-mochila-continuar-site-success">
3811 Continuar no site
3812 </button>
3813
3814 </div>
3815
3816
3817 </div>
3818
3819 </section>
3820
3821</#if>
3822
3823<#if nomeTipoCurso?has_content && nomeTipoCurso?contains("Ensino Médio Técnico") >
3824 <!-- Agende a sua visita -->
3825 <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search") />
3826 <#assign articles = searchImpl.search("EMED - Agende sua visita", {}, themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), false) />
3827
3828 <section id="ssp-emed-visita-sector">
3829 <div class="container py-5 pt-lg-0" style="display:none;">
3830 <div data-emed="ssp-emed-visita-wrapper" class="ssp-emed-visita-wrapper">
3831 <#list articles![] as article>
3832 <#assign document = saxReaderUtil.read(article.getContent()) />
3833 <#assign rootElement = document.getRootElement() />
3834
3835 <#assign
3836 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoDoBotao']")
3837 textoDoBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3838
3839 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='linkBotao']")
3840 linkBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3841
3842 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='ativarBotao']")
3843 ativarBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3844 />
3845
3846 <#if ativarBotao?trim == "true">
3847 <script>$('#ssp-emed-visita-sector').children().show()</script>
3848 <div data-emed="ssp-emed-visita-text" class="ssp-emed-visita-text">
3849
3850 <a href="${linkBotao}">${textoDoBotao}</a>
3851
3852 </div>
3853 <div class="ssp-emed-visita-icon">
3854 <i class="fas fa-route"></i>
3855 </div>
3856 </#if>
3857 </#list>
3858 </div>
3859 </div>
3860 </section>
3861
3862
3863 <!-- Como me matricular EMED -->
3864
3865 <section class="ssp-como-me-matricular__section">
3866
3867 <h2 class="title-section-white">Como me matricular?</h2>
3868
3869 <div class="container">
3870
3871 <div class="ssp-como-me-matricular__passo-passo-card">
3872
3873 <div class="item-passo">
3874 <img class="item-passo-icone" src="/o/senac-theme/images/icon-escolha-curso.svg" alt="">
3875 <p class="item-passo-title">Escolha o curso</p>
3876 <span>Selecione o curso, a unidade do seu interesse e confira as turmas disponíveis.</span>
3877 </div>
3878
3879 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
3880
3881 <div class="item-passo">
3882 <img class="item-passo-icone" src="/o/senac-theme/images/icon-realize-inscricao.svg" alt="">
3883 <p class="item-passo-title">Adicione à Mochila</p>
3884 <span>Faça login ou crie uma conta em nosso site e continue a compra.</span>
3885 </div>
3886
3887 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
3888
3889 <div class="item-passo">
3890 <img class="item-passo-icone" src="/o/senac-theme/images/icon-aguarde-contato.svg" alt="">
3891 <p class="item-passo-title">Faça a matrícula</p>
3892 <span>Todas as etapas são on-line. Para garantir a vaga, preencha todas as informações.</span>
3893 </div>
3894
3895 </div>
3896
3897
3898 </div>
3899
3900 </section>
3901
3902 </#if>
3903
3904
3905 <div class="ssp-section ssp-section-lg-bottom-slider d-none" id="section-cursos-voce-pode-gostar" style="background-color: #f2f2f2">
3906 <div class="container">
3907 <h2 class="ssp-section-title">
3908 <lfr-editable id="cursos-voce-pode-gostar-title" type="rich-text">
3909 Cursos que você pode gostar
3910 </lfr-editable>
3911 </h2>
3912
3913 <div id="slider-curso">
3914
3915 </div>
3916
3917 </div>
3918 </div>
3919
3920
3921
3922
3923 <#-- Section para o item de curso-->
3924 <div id="curso-item-template" class="d-none slick-area__item">
3925
3926 <div class="ssp-card-curso" style="height: 288px;">
3927
3928 <a class="ssp-absolute-link ck-curso" href="#a"></a>
3929
3930 <div class="ssp-card-curso__image">
3931
3932 <div class="ssp-image-container">
3933 <img src="" />
3934
3935 </div>
3936
3937 </div>
3938
3939 <div class="ssp-card-curso__body">
3940
3941 <div class="ssp-card-curso__color-tag-modalidade"></div>
3942
3943 <div class="ssp-card-curso__tags">
3944
3945 <span class="ssp-card-curso__tag-formato-title"></span>
3946
3947 <span class="tag-modalidade-title__senac-online d-none">Senac Online - ao vivo</span>
3948
3949 </div>
3950
3951 <h6 class="ssp-card-curso__title">
3952
3953 </h6>
3954
3955 <div class="ssp-card-curso__info">
3956
3957 <span class="ssp-tag bg-white border-nivel-extensao text-nivel-extensao mr-1 btn-inscricoes-abertas">Inscrições abertas</span>
3958 <span class="ssp-tag bg-white border-primary text-primary btn-bolsas">Bolsas</span>
3959
3960 </div>
3961
3962 </div>
3963
3964 </div>
3965
3966 </div>
3967
3968 <#function getJournalArticle>
3969
3970
3971 <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
3972 <#assign friendlyURL = themeDisplay.getURLCurrent()?split("/")?last?split("?")?first>
3973 <#assign groupId = themeDisplay.getSiteGroupId()>
3974 <#attempt>
3975
3976 <#if !friendlyURL?contains("fragment_collections") >
3977
3978 <#return journalArticleService.getArticleByUrlTitle(groupId,friendlyURL)>
3979 <#else>
3980
3981 <#return '#erro#'>
3982 </#if>
3983
3984 <#recover>
3985
3986 <#return '#erro#'>
3987 </#attempt>
3988 </#function>
3989
3990 <#function getCategorias primaryKey>
3991
3992 <#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3993 <#attempt>
3994
3995 <#return categoryService.getCategories("com.liferay.journal.model.JournalArticle", primaryKey)>
3996
3997 <#recover>
3998
3999 <#return '#erro#'>
4000 </#attempt>
4001 </#function>
4002
4003 <#function getVocabulary vocabularyId>
4004
4005 <#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") />
4006 <#attempt>
4007
4008 <#return vocabularyService.getVocabulary(vocabularyId)>
4009
4010 <#recover>
4011
4012 <#return '#erro#'>
4013 </#attempt>
4014 </#function>
4015
4016 <#function getStringValue dom name>
4017 <#assign
4018 seletorSTR = "dynamic-element[@field-reference='"+name+"']"
4019 xPathSelector = saxReaderUtil.createXPath(seletorSTR)
4020 />
4021 <#if xPathSelector.selectSingleNode(dom)?? >
4022 <#assign
4023 valueSTR = xPathSelector.selectSingleNode(dom).getStringValue()?trim
4024 />
4025 <#return valueSTR>
4026 </#if>
4027 <#return ''>
4028 </#function>
4029
4030 <!--Modal de Login -->
4031
4032 <section id="modal-login" class="ssp-modal-registro-interesse d-none">
4033
4034 <div class="dropdown-menu-modal dropdown-menu-right" id="js-login-dropdown-menu-2" style="width: 340px; max-width: 340px; display: block;">
4035
4036 <div class="px-5">
4037 <i id="btn-close-loginModal" class="fas fa-times btn-close__modal-login"></i>
4038 <div class="text-darker-gray py-3">Faça login na sua conta</div>
4039 </div>
4040
4041 <div class="dropdown-divider"></div>
4042
4043 <div class="dropdown-menu-arrow"></div>
4044
4045 <form id="login_form" class="px-5 py-4" method="post">
4046
4047 <div class="alert alert-danger py-3 d-none" id="mensagem-erro-login" style="background:#f8d7da;border-color:#f5c6cb; color:#a94442"></div>
4048
4049 <div class="form-group">
4050
4051 <label for="login-email">E-mail</label>
4052 <div class="input-group mb-2">
4053 <div class="input-group-prepend">
4054 <span class="input-group-text"><i class="icon-envelope"></i></span>
4055 </div>
4056 <input type="text" class="form-control" id="login-email-modal" name="_com_liferay_login_web_portlet_LoginPortlet_login" placeholder="Digite seu e-mail" aria-label="Email" aria-describedby="login-email">
4057 </div>
4058
4059 </div>
4060
4061 <div class="form-group">
4062
4063 <label for="login-password">Senha</label>
4064 <div class="input-group mb-2">
4065 <div class="input-group-prepend">
4066 <span class="input-group-text"><i class="icon-key"></i></span>
4067 </div>
4068 <input type="password" class="form-control" id="login-password-modal" name="_com_liferay_login_web_portlet_LoginPortlet_password" placeholder="Digite sua senha" aria-label="Password" aria-describedby="login-password">
4069 </div>
4070
4071 </div>
4072
4073 <div class="pt-1 pb-3">
4074 <small><a href="http://www.sp.senac.br/login-unico/SendPassword" target="_blank">Esqueceu sua senha?</a></small>
4075 </div>
4076
4077 <button type="button" class="btn btn-primary w-100" id="btnLogin" data-login="btnLogin">Entrar</button>
4078 </form>
4079
4080 <div class="dropdown-divider"></div>
4081
4082 <div class="px-5 pb-4">
4083 <div class="text-darker-gray py-3">Não tem cadastro?</div>
4084 <a href="https://www.sp.senac.br/usuario-unico/InsertUser?destino=${themeDisplay.getPortalURL()+themeDisplay.getURLCurrent()}" target="_blank" class="btn bg-btn-cadastre btn-nivel-livre text-white w-100 ">Cadastre-se</a>
4085 </div>
4086
4087
4088 </div>
4089
4090 </section>
4091
4092 <!-- modal registro interesse -->
4093
4094
4095 <section id="modal-registro-interesse" class="ssp-modal-registro-interesse d-none">
4096
4097 <#if !isEMED>
4098 <div class="ssp-card-registro-interesse">
4099
4100 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4101
4102 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4103 <h3 class="ssp-card-registro-interesse__nome-curso"></h3>
4104
4105 <div id="unidades-registro-interesse">
4106
4107 <h4 class="ssp-card-registro-interesse__title-section-itens">Unidade:</h4>
4108
4109 <div id="select-unidades-registro-interesse">
4110 <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select>
4111 </div>
4112
4113 <div class="ssp-card-registro-interesse__add-mais">
4114 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a>
4115
4116
4117
4118 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a>
4119 </div>
4120
4121 </div>
4122
4123 <div id="dias-registro-interesse">
4124 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Dias da Semana</h4>
4125
4126 <div class="ssp-card-registro-interesse__week-content">
4127 <span id="todosDias" class="ssp-week-day">Todos</span>
4128 <span class="ssp-week-day">Seg</span>
4129 <span class="ssp-week-day">Ter</span>
4130 <span class="ssp-week-day">Qua</span>
4131 <span class="ssp-week-day">Qui</span>
4132 <span class="ssp-week-day">Sex</span>
4133 <span class="ssp-week-day">Sab</span>
4134 </div>
4135
4136 </div>
4137
4138 <div id="periodo-registro-interesse">
4139
4140 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Período:</h4>
4141
4142 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4143
4144 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4145 <input type="checkbox" name="" value="" id="check-todos-periodos">
4146 <label for="check-todos-periodos">Todos</label>
4147 </div>
4148
4149 <div class="ssp-card-registro-interesse__check-item">
4150 <input type="checkbox" name="" value="M" id="periodo-m">
4151 <label for="periodo-m">Manhã</label>
4152 </div>
4153
4154 <div class="ssp-card-registro-interesse__check-item">
4155 <input type="checkbox" name="" value="T" id="periodo-t">
4156 <label for="periodo-t">Tarde</label>
4157 </div>
4158
4159 <div class="ssp-card-registro-interesse__check-item">
4160 <input type="checkbox" name="" value="N" id="periodo-n">
4161 <label for="periodo-n" "="">Noite</label>
4162 </div>
4163
4164
4165 </div>
4166
4167 </div>
4168
4169 <div class="ssp-card-registro-interesse__card-politica">
4170
4171
4172 <p class="ssp-card-registro-interesse__card-politica-title">
4173 <strong>Política de Privacidade do Senac São Paulo </strong>
4174 </p>
4175
4176 <p>Data de publicação 06/08/2024</p>
4177
4178 <p class="ssp-card-registro-interesse__card-politica-text">
4179 O Serviço Nacional de Aprendizagem Comercial - Senac,
4180 Administração no Estado de São Paulo (Senac SP) zela pela privacidade e proteção dos dados pessoais de todos aqueles
4181 com quem se relaciona.
4182 </p>
4183
4184 <p class="ssp-card-registro-interesse__card-politica-text">
4185
4186 A presente Política de Privacidade tem o objetivo de informar sobre quais dados pessoais a seu respeito são
4187 coletados; por qual motivo os coletamos; com quem os compartilhamos; por quanto tempo os mantemos conosco; quais as
4188 medidas de segurança que adotamos; e quais os direitos que você tem.
4189 <br><br>
4190 É importante que você leia esta Política com atenção, bem como a consulte periodicamente para verificar possíveis
4191 alterações no que diz respeito ao tratamento de seus dados pessoais.
4192 <br><br>
4193 Em caso de dúvidas, entre em contato via e-mail indicado no final deste documento.
4194 <br><br>
4195 <b>1. Quem somos nós?</b><br>
4196 O Senac SP é a Administração Regional do Senac no Estado de São Paulo. O Senac SP está inscrito no CNPJ sob o nº
4197 03.709.814/0001-98 e tem sede à Rua Dr. Vila Nova, 228, 7º andar, na cidade de São Paulo, Estado de São Paulo. Para
4198 fins da Lei Geral de Proteção de Dados Pessoais (Lei nº 13.709/2018, LGPD) e desta Política, o Senac SP é
4199 controlador dos dados pessoais.
4200 <br><br>
4201 <b>2. O que você precisa saber antes de ler esta política?</b>
4202 <br>
4203 Dados pessoais são todas as informações que identificam ou permitam a sua identificação. Por exemplo, seu nome, CPF,
4204 e-mail, endereço, dados de contato, dados de conta bancária, entre outros. Incluem-se nesse conceito os dados
4205 pessoais sensíveis, conforme definição a seguir:
4206 <br><br>
4207 Dados pessoais sensíveis são as informações que revelam ou cujo tratamento venha revelar origem racial ou étnica,
4208 convicção religiosa, opinião política, filiação à sindicato ou à organização de caráter religioso, filosófico ou
4209 político, dados de saúde ou sobre a vida sexual, dado genético ou biométrico.
4210 <br><br>
4211 Encarregado é o seu canal de contato sobre assuntos relacionados à privacidade e à proteção de dados pessoais. Se
4212 você tiver qualquer dúvida sobre como os seus dados pessoais ou de seus dependentes/beneficiários são tratados por
4213 nós, é ele quem vai ajudar.
4214 <br><br>
4215 Titular é a pessoa física a quem se referem os dados pessoais objeto do tratamento.
4216 <br><br>
4217 Tratamento significa qualquer operação realizada com dados pessoais, tais como coleta, produção, classificação,
4218 utilização, acesso, processamento, armazenamento, eliminação, modificação, compartilhamento, transferência, entre
4219 outros.
4220 <br><br>
4221 Sempre que houver menção aos "Termos de Uso do Senac SP", "Nós" ou "Nossos", estaremos nos referindo à instituição
4222 descrita no tópico "Quem somos nós". Da mesma forma, toda vez que mencionarmos "você", "seu" ou "sua", estamos nos
4223 referindo a você, titular de dados pessoais, que possui relação com o Senac SP na qualidade de pessoa interessada,
4224 candidato a aluno, aluno e/ou ex-aluno, terceiros relacionados a candidatos ou alunos usuário de nossa rede wi-fi.
4225 <br><br>
4226 <b>3. Quais dados pessoais são tratados e por quê?</b>
4227 <br>
4228 O Senac SP realiza, a depender de sua relação conosco, o tratamento dos dados pessoais a seguir identificados para
4229 atendimento às finalidades ora descritas, conforme aplicável:
4230 <br><br>
4231 <b>Visitante / Interessado</b>
4232 <br>
4233 <b>Atividade: Navegação</b>
4234 <br>
4235 Dados pessoais: Endereço de IP com data e hora, informações sobre o dispositivo utilizado para a navegação e tipo de
4236 navegador utilizado, localização do dispositivo, sequência de cliques, termos pesquisados no Portal Senac SP, origem
4237 do tráfego.
4238 <br><br>
4239 Finalidade: Os dados pessoais são utilizados para permitir a análise do tráfego do Portal Senac SP; viabilizar o
4240 envio de anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses;
4241 aprimorar as funcionalidades do Portal Senac SP; monitorar fraudes e segurança, inclusive detectando e prevenindo
4242 ataques cibernéticos ou tentativas de roubo de identidade; atender exigências legais.
4243 <br><br>
4244 </p>
4245
4246 <hr>
4247
4248 <p class="ssp-card-registro-interesse__card-politica-text">
4249 <br>
4250 <b>Atividade: Cadastro</b><br>
4251 Dados pessoais: Nome, nome social, CPF, data de nascimento, sexo, documento de identificação civil, endereço,
4252 telefone.
4253 <br><br>
4254 Finalidade: Os dados pessoais são utilizados para cadastro na base de dados do Senac SP, havendo validação do
4255 cadastro por duplo fator de autenticação.
4256 <br>
4257 </p>
4258
4259 <hr>
4260
4261 <p class="ssp-card-registro-interesse__card-politica-text">
4262 <br>
4263 <b>Atividade: Inscrição em eventos</b><br>
4264 Dados pessoais: Nome, nome social/afetivo, estado civil, RG, CPF, e-mail, telefone, endereço, raça, evento
4265 pretendido, dado sobre deficiência, formação acadêmica, e situação profissional.
4266 <br><br>
4267 Finalidade: Os dados pessoais são utilizados para viabilizar sua inscrição e participação em eventos promovidos pelo
4268 Senac SP que não tenham participação restrita a alunos matriculados em nossos cursos.
4269 <br>
4270 </p>
4271
4272 <hr>
4273
4274 <p class="ssp-card-registro-interesse__card-politica-text">
4275 <br>
4276 <b>Atividade: Comunicação e Marketing</b><br>
4277 Dados pessoais: Nome, telefone, e-mail, empresa para qual trabalha, cidade, informações fornecidas voluntariamente
4278 em mensagens nos nossos canais de atendimento e redes sociais.
4279 <br><br>
4280 Finalidade: Os dados pessoais são utilizados para responder perguntas, dúvidas, sugestões, elogios ou reclamações;
4281 realizar estudos para entender demandas e necessidades relacionadas aos nossos cursos/eventos; viabilizar o envio de
4282 anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses.
4283 <br>
4284 </p>
4285
4286 <hr>
4287
4288 <p class="ssp-card-registro-interesse__card-politica-text">
4289 <br>
4290 <b>Candidato a aluno</b><br>
4291 <b>Atividade: Processo seletivo</b><br>
4292 Dados pessoais: Nome, nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo,
4293 número de inscrição, RG/RNE/Passaporte, CPF, filiação, formação acadêmica, experiência profissional, informação
4294 sobre deficiência, resultados de provas, dados tornados manifestamente públicos em plataformas como LinkedIn e
4295 Lattes, dentre outros, conforme exigido a depender do processo seletivo.
4296 <br><br>
4297 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsáveis legais em caso de candidato a aluno
4298 menor de idade.
4299 <br><br>
4300 Finalidade: Os dados pessoais são utilizados, conforme necessário para cada processo seletivo, para fins de
4301 viabilizar sua inscrição e participação em processos seletivos; permitir a seleção de alunos conforme critérios
4302 previamente informados em editais e exigido em leis/normas setoriais aplicáveis; enviar informações sobre o processo
4303 seletivo, inclusive lembrete da proximidade da data de realização de provas; disponibilizar lista de classificação;
4304 responder perguntas, dúvidas, sugestões, elogios ou reclamações; enviar anúncios, ofertas e/ou informações sobre
4305 cursos, eventos e/ou benefícios de acordo com seus interesses.
4306 <br>
4307 </p>
4308
4309 <hr>
4310
4311 <p class="ssp-card-registro-interesse__card-politica-text">
4312 <br>
4313 <b>Atividade: Bolsas de estudo</b><br>
4314 Dados pessoais: Nome, nome social/afetivo, estado civil, RG, CPF, e-mail, telefone, endereço, raça, curso
4315 pretendido, dado sobre deficiência, formação acadêmica, e situação profissional, familiar e domiciliar (incluindo
4316 renda bruta de pessoas do mesmo grupo familiar identificadas pelo nome).
4317 <br><br>
4318 Finalidade: Os dados pessoais são utilizados para selecionar candidatos para o recebimento de bolsas de estudo, em
4319 particular do Programa Senac de Gratuidade (PSG).
4320 <br>
4321 </p>
4322
4323 <hr>
4324
4325 <p class="ssp-card-registro-interesse__card-politica-text">
4326 <br>
4327 <b>Aluno</b><br>
4328 <b>Atividade: Matrícula</b><br>
4329 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
4330 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
4331 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
4332 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
4333 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
4334 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
4335 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
4336 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
4337 <br><br>
4338 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
4339 responsáveis legais do aluno se menor de idade.
4340 <br><br>
4341 Finalidade: Os dados pessoais são utilizados para viabilizar a celebração de contrato com você e, consequentemente,
4342 a prestação dos serviços contratados; liberar acesso a sistemas e áreas restritas; cobrar valores decorrentes do seu
4343 contrato conosco; e outras finalidades relacionadas.
4344 <br>
4345 </p>
4346
4347 <hr>
4348
4349 <p class="ssp-card-registro-interesse__card-politica-text">
4350 <br>
4351
4352 <b>Atividade: Jornada Acadêmica</b><br>
4353 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
4354 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
4355 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
4356 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
4357 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
4358 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
4359 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
4360 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
4361 <br><br>
4362 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
4363 responsáveis legais do aluno se menor de idade.
4364 <br><br>
4365 Finalidade: Os dados pessoais são utilizados para registrar e acompanhar o desenvolvimento acadêmico e profissional
4366 do aluno; permitir o contato do Senac SP, por qualquer meio; viabilizar apoio pedagógico e psicopedagógico;
4367 responder suas perguntas, dúvidas, sugestões, elogios ou reclamações; enviar comunicações administrativas como, por
4368 exemplo, sobre alterações em nossas políticas; monitorar o desenvolvimento de atividades de estágio; permitir a
4369 realização de intercâmbio acadêmico.
4370 <br>
4371 </p>
4372
4373 <hr>
4374
4375 <p class="ssp-card-registro-interesse__card-politica-text">
4376 <br>
4377 <b>Atividade: Bolsas de estudo</b><br>
4378 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
4379 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
4380 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
4381 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
4382 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
4383 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
4384 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
4385 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
4386 <br><br>
4387 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
4388 responsáveis legais do aluno se menor de idade.
4389 <br><br>
4390 Finalidade: Os dados pessoais são utilizados para avaliar e monitorar o cumprimento de requisitos para o
4391 fornecimento de bolsas de estudo.
4392 <br>
4393 </p>
4394
4395 <hr>
4396
4397 <p class="ssp-card-registro-interesse__card-politica-text">
4398 <br>
4399
4400
4401 <b>Atividade: Benefícios</b><br>
4402 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
4403 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
4404 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
4405 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
4406 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
4407 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
4408 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
4409 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
4410 <br><br>
4411 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
4412 responsáveis legais do aluno se menor de idade.
4413 <br><br>
4414 Finalidade: Os dados pessoais são utilizados para fins de oferecer benefícios ligados ao objeto do seu contrato
4415 educacional com o Senac SP, como, por exemplo, o download gratuito de programas de computador devidamente
4416 licenciados, descontos em serviços prestados por nossos parceiros ou para aquisição de obras da Editora Senac, entre
4417 outros; enviar anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus
4418 interesses; viabilizar análises e estudos relacionados ao interesse por e utilização de determinados benefícios,
4419 inclusive para aperfeiçoamento das nossas parcerias comerciais.
4420 <br>
4421 </p>
4422
4423 <hr>
4424
4425 <p class="ssp-card-registro-interesse__card-politica-text">
4426 <br>
4427 <b>Atividade: Procedimentos internos</b><br>
4428 Finalidade: Os dados pessoais são utilizados para fins de gestão da oferta, qualidade e aprimoramento dos serviços
4429 prestados pelo Senac SP, inclusive por meio do envio de pesquisas; viabilizar estratégia de aprendizagem remota e
4430 presencial; fornecer serviços de suporte; realizar estudos para entender demandas e necessidades relacionadas aos
4431 nossos produtos/serviços; preparar e disponibilizar relatórios de auditoria e gerenciais; fornecer segunda via e/ou
4432 cópia de documentos como diploma e histórico escolar; criar grupos de representantes de alunos para facilitar o
4433 diálogo e endereçamento de demandas; informar sobre a possibilidade de participação em processos acadêmicos e de
4434 pesquisa.
4435 <br>
4436 </p>
4437
4438 <hr>
4439
4440 <p class="ssp-card-registro-interesse__card-politica-text">
4441 <br>
4442
4443
4444 <b>Atividade: Obrigações legais e exercícios de direito</b><br>
4445 Finalidade: Os dados pessoais são utilizados para atender políticas públicas, como as assistenciais e de transporte
4446 escolar; viabilizar a condução do censo escolar; realizar as divulgações exigidas por normas legais ou de interesse
4447 do Senac SP, como lista de aprovados e conquistas obtidas; enviar dados ao MEC; inscrever estudantes para, por
4448 exemplo, realizar o Exame Nacional de Desempenho de Estudantes (Enade); colaborar com o cumprimento de ordem
4449 judicial, de autoridade competente ou de órgão fiscalizador.
4450 <br>
4451 </p>
4452
4453 <hr>
4454
4455 <p class="ssp-card-registro-interesse__card-politica-text">
4456 <br>
4457
4458 <b>Atividade: Pesquisas e desenvolvimento</b><br>
4459 Finalidade: Os dados pessoais poderão ser utilizados para entrar em contato e conduzir pesquisas para identificar
4460 pontos de melhoria nos produtos e serviços, permitir a mensuração de qualidade dos cursos, permitir a execução do
4461 programa de trabalho do Senac SP, bem como para conduzir pesquisas que decorram de lei e/ou regulamento ao qual o
4462 Senac SP está sujeito.
4463 <br>
4464 </p>
4465
4466 <hr>
4467
4468 <p class="ssp-card-registro-interesse__card-politica-text">
4469 <br>
4470
4471 <b>Atividade: Monitoramento</b><br>
4472 Finalidade: Os dados pessoais são utilizados para fins de monitorar a segurança dos ambientes de ensino e
4473 aprendizagem; prevenir fraudes, prática de condutas ilícitas e incidentes de segurança; cumprir exigências, por
4474 exemplo, de registro de acesso às aplicações estabelecidas no Marco Civil da Internet - Lei nº 12.965/2014.
4475 <br>
4476 </p>
4477
4478 <hr>
4479
4480 <p class="ssp-card-registro-interesse__card-politica-text">
4481 <br>
4482
4483 <b>Ex-aluno</b><br>
4484 <b>Atividade: Relacionamento, pesquisa, obrigações legais e exercício de direitos</b><br>
4485 Dados pessoais: Nome, telefone, e-mail, endereço, CPF, número de matrícula, formação acadêmica, histórico acadêmico,
4486 fotos, dentre outros, a depender da modalidade de ensino realizada no Senac SP.
4487 <br><br>
4488 Finalidade: Os dados pessoais são utilizados para atender obrigações do Senac SP de manutenção de registros
4489 escolares; acompanhar o seu desenvolvimento (por exemplo, com a análise da sua empregabilidade em decorrência da
4490 formação recebida); responder perguntas, dúvidas, sugestões, elogios ou reclamações; enviar anúncios, ofertas e/ou
4491 informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses; entrar em contato e conduzir
4492 pesquisas com fins de identificar motivação para realização de cursos e inserção produtiva no mercado, bem como para
4493 conduzir pesquisas que decorram de lei e/ou regulamento ao qual o Senac SP está sujeito; garantir o cumprimento de
4494 obrigação legal ou regulatória e/ou o exercício de direitos do Senac SP, inclusive em processos judiciais,
4495 administrativos e arbitrais; atender consulta de terceiros acerca do seu relacionamento com o Senac SP; colaborar
4496 com o cumprimento de ordem judicial, de autoridade competente, órgão fiscalizador ou com pedido de entidade de
4497 fornecimento de dados sobre você no caso de, por exemplo, concursos públicos.
4498 <br>
4499 </p>
4500
4501 <hr>
4502
4503 <p class="ssp-card-registro-interesse__card-politica-text">
4504 <br>
4505 <b>Terceiros relacionados a candidatos e/ou alunos</b><br>
4506 <b>Atividade: Atuação de responsável legal e pagamento pelo responsável financeiro. Seleção de bolsistas</b><br>
4507 Dados pessoais: Nome, estado civil, RG, CPF, e-mail, telefone, endereço, renda bruta, grau de parentesco com
4508 aluno/candidato a aluno, dados de pagamento, dados de utilização de portais do Senac SP (endereço de IP, login).
4509 <br><br>
4510 Finalidade: Os dados pessoais são utilizados para permitir a celebração de contratos com menores e a gestão da vida
4511 escolar por responsável legal; viabilizar operações de pagamento, pelo responsável financeiro; permitir a seleção de
4512 candidatos para oferta de bolsas de estudos; atender requisições de autoridades e exercício regular de direito pelo
4513 Senac SP.
4514 <br>
4515 </p>
4516
4517 <hr>
4518
4519 <p class="ssp-card-registro-interesse__card-politica-text">
4520 <br><br>
4521 <b>Usuário Wi-Fi</b><br>
4522 <b>Atividade: Uso da rede wi-fi CONECTA SENAC</b><br>
4523 Dados pessoais: Nome, e-mail, CPF, endereço de IP com data e hora, informações sobre o dispositivo utilizado para a
4524 navegação e tipo de navegador utilizado (inclusive endereço MAC), localização do dispositivo.
4525 <br><br>
4526 Finalidade: Os dados pessoais são utilizados para viabilizar o uso da rede wi-fi "Conecta_Senac"; atender leis e
4527 outros normativos aplicáveis, bem como ordem de autoridades, em particular em casos de investigação; avaliar
4528 desempenho da rede e realizar diagnóstico de problemas, solucionando-os; comunicar sobre manutenção da rede e/ou
4529 outras informações relevantes; proteger você, terceiros e o Senac.
4530 <br><br>
4531
4532
4533 Os dados pessoais acima elencados podem ser coletados primordialmente das seguintes fontes: (a) diretamente de você
4534 ou da pessoa autorizada por você; (b) fornecedores do Senac SP, como empresas prestadoras de serviços; (c) sistemas
4535 de monitoramento de ambientes Senac SP; (d) autoridades públicas, judiciais e administrativas. Você é a única pessoa
4536 responsável pela exatidão, veracidade e autenticidade das informações fornecidas diretamente fornecidas.
4537 <br><br>
4538 Trataremos os dados pessoais conforme hipóteses autorizadoras listadas na LGPD, notadamente: (i) cumprimento de
4539 obrigação legal ou regulatória, (ii) execução de contrato, (iii) exercício regular de direitos, e (iv) legítimo
4540 interesse do Senac SP ou de terceiros. Para os casos em que a lei exija a obtenção de seu consentimento e/ou de seu
4541 responsável legal, atuaremos de modo a garantir que você seja devidamente informado acerca da necessidade da
4542 autorização e consequências da sua recusa, para que você possa manifestar livremente a sua decisão.
4543 <br><br>
4544 O Senac SP utilizará os seus dados pessoais para finalidades compatíveis com as informadas nesta Política e sempre
4545 que entender haver base legal para o tratamento posterior nos termos da LGPD.
4546 <br><br>
4547
4548
4549 <b>4. Com quem compartilhamos os seus dados pessoais?</b><br>
4550 Poderemos compartilhar os seus dados pessoais com entidades que compõem a nossa estrutura organizacional
4551 (Administração Nacional e as demais Administrações Regionais), com empresas com as quais mantemos algum tipo de
4552 relação comercial, com seu responsável legal e/ou financeiro ou, ainda, com órgãos públicos, tais como parceiros
4553 comerciais, instituições bancárias, escritórios de advocacia, empresas de suporte aos nossos sistemas, bureaus de
4554 crédito, consultorias contábeis, órgãos públicos e o Poder Judiciário. Os seus dados pessoais podem ser
4555 compartilhados para finalidades legítimas da seguinte maneira:
4556 <br><br>
4557 - Para condução das atividades de tratamento de dados pessoais descritas nesta Política e/ou decorrentes de seu
4558 relacionamento e contrato de prestação de serviços conosco;
4559 <br><br>
4560 - Para permitir que terceiros forneçam serviços para o Senac SP e/ou acompanhem a prestação de serviços contratada,
4561 conforme aplicável;
4562 <br><br>
4563 - Para obedecer as nossas obrigações legais, regulatórias ou contratuais, ou responder a um processo judicial ou
4564 administrativo, auditoria ou solicitações legais por autoridades competentes, quando entendermos que estamos
4565 legalmente obrigados a fazê-lo ou, ainda, para fins de atendimento a ofícios relacionados a processos seletivos e/ou
4566 concursos públicos dos quais você participa. As categorias de destinatários incluem, por exemplo, contrapartes em
4567 contratos, órgãos judiciais e governamentais;
4568 <br><br>
4569 - Para exercício legítimo de direito em processo judicial, administrativo ou arbitral, inclusive prevenindo lesão ou
4570 ameaça a direito;
4571 <br><br>
4572 - Quando for necessário para proteger você, o Senac SP e seus interesses legítimos e/ou terceiros;
4573 <br><br>
4574 - Como parte de due diligence corporativa e/ou due diligence relativa à fusão, aquisição, alteração societária, ou
4575 em casos de recuperação judicial ou falência, nós podemos divulgar os seus dados pessoais ao potencial vendedor ou
4576 comprador, novo prestador de serviços e respectivos assessores, na medida do quanto necessário e adequado para o
4577 atingimento da aludida finalidade;
4578 <br><br>
4579 - Com o seu consentimento legalmente obtido, isto é dado de forma voluntária e sem que você sofra qualquer
4580 consequência adversa de sua decisão que negar ou revogar o seu consentimento.
4581 <br><br>
4582
4583
4584 Informações agregadas e anonimizadas poderão ser livremente compartilhadas.
4585 <br><br>
4586 Para resguardar a sua privacidade, utilizamos instrumentos contratuais e auditorias para assegurar que os terceiros
4587 que recebam os seus dados pessoais confiram a ele a mesma proteção que nós proporcionamos.
4588 <br><br>
4589 Atualmente, apenas compartilhamos os seus dados pessoais em território nacional. Caso haja transferência dos seus
4590 dados pessoais para fora do Brasil, nos certificaremos de que essa transferência ocorra em observância à legislação
4591 brasileira e que você seja informado de tal compartilhamento, sempre que exigido pela legislação aplicável.
4592 <br><br>
4593 Você pode ter mais informações sobre os terceiros com quem compartilhamos os seus dados pessoais por meio de
4594 requisição específica, conforme indicado no tópico que trata sobre os seus direitos.
4595 <br><br>
4596
4597
4598 <b>5. Por quanto tempo tratamos os seus dados pessoais?</b><br>
4599 Os seus dados pessoais serão tratados pelo tempo que for necessário para cumprir a finalidade para a qual eles foram
4600 coletados, a menos que um período de retenção mais longo seja necessário para cumprir obrigações legais, resolver
4601 disputas, proteger nossos ativos ou cumprir acordos judiciais/extrajudiciais.
4602 <br><br>
4603 Para determinar o período de retenção de seus dados pessoais, além do critério acima indicado, baseamo-nos nos
4604 seguintes critérios:
4605 <br><br>
4606 - Existência de uma obrigação legal ou contratual de reter os dados pessoais;
4607 <br><br>
4608 - Necessidade dos dados pessoais para investigação, auditoria ou exercício regular de nossos direitos em processos
4609 judiciais, administrativos ou arbitrais;
4610 <br><br>
4611 - Utilidade dos dados pessoais para fins de manutenção de registros precisos, especialmente financeiros e
4612 educacionais.
4613 <br><br>
4614 Podemos manter os seus dados pessoais, de forma anonimizada, ou seja, que não mais se refere a você pessoalmente,
4615 para fins estatísticos, sem limite de tempo, na medida em que tenhamos interesse legítimo e respaldo legal.
4616 <br><br>
4617
4618
4619 <b>6. Como mantemos seus dados pessoais seguros?</b><br>
4620 Adotamos medidas administrativas e técnicas, continuamente monitoradas e revisadas, de acordo com os avanços
4621 tecnológicos, aptas a manter os seus dados pessoais sob nossa responsabilidade protegidos de acessos não autorizados
4622 e de situações acidentais ou ilícitas de destruição, perda, alteração, comunicação ou qualquer outra forma de
4623 tratamento inadequado ou ilícito.
4624 <br><br>
4625 Nossos sistemas eletrônicos e arquivos físicos atendem aos padrões de segurança da informação adequados, tais como:
4626 <br><br>
4627 - Controle restrito de acesso interno;
4628 <br><br>
4629 - Proteção contra acessos não autorizados com a utilização de instrumentos de dupla autenticação, senha e chaves;
4630 <br><br>
4631 - Manutenção de inventário dos acessos, com o momento, a duração, a identificação do responsável pelo acesso e dados
4632 acessados.
4633 <br><br>
4634 Quaisquer comunicações legalmente exigidas sobre eventuais incidentes de segurança que possam acarretar perdas de
4635 disponibilidade, confidencialidade ou integridade dos dados pessoais sob nossa responsabilidade serão notificadas
4636 adequadamente às autoridades competentes e aos titulares afetados.
4637 <br><br>
4638
4639
4640 <b>7. Quais são os seus direitos?</b><br>
4641 Você, enquanto titular de dados pessoais, possui os seguintes direitos relativos aos seus dados pessoais:
4642 <br><br>
4643 <b>Direito X Explicação</b><br>
4644 1. Confirmação da existência de tratamento de seus dados pessoais<br>
4645 Esse direito permite que você solicite a confirmação acerca da existência de tratamento dos seus dados pessoais.
4646 <br><br>
4647 2. Acesso aos dados pessoais<br>
4648 Esse direito permite que você solicite uma cópia dos seus dados pessoais.
4649 <br><br>
4650 3. Correção de dados pessoais incompletos, inexatos ou desatualizados<br>
4651 Esse direito permite que você solicite a correção e/ou retificação dos seus dados pessoais, caso identifique que
4652 estão incompletos, inexatos ou desatualizados.
4653 <br><br>
4654 4. Anonimização, bloqueio ou eliminação de dados pessoais<br>
4655 Esse direito permite que você solicite a anonimização, o bloqueio ou a eliminação dos seus dados pessoais, se
4656 desnecessários, excessivos ou tratados de forma incorreta.
4657 <br><br>
4658 É possível, ainda, que você solicitea eliminação dos dados pessoais tratados com o seu consentimento e desde que
4659 ausente outra finalidade legitimadora de sua conservação, como a existência de obrigação legal ou regulatória a ser
4660 por nós atendida.
4661 <br><br>
4662 <br><br>
4663 O exercício desse direito também dependerá da nossa possibilidade técnica de atender o pedido.
4664 <br><br>
4665 <b>5. Portabilidade dos dados pessoais</b><br>
4666 Esse direito permite que você solicite o envio de seus dados pessoais para outras entidades, desde que não haja
4667 violação da nossa propriedade intelectual.
4668 <br><br>
4669 A requisição de exercício desse direito não implica na eliminação de dados pessoais.
4670 <br><br>
4671 <b>6. Não fornecimento ou revogação do consentimento</b><br>
4672 Esse direito permite que você não forneça ou revogue o seu consentimento, o que não afetará a legalidade de qualquer
4673 tratamento de dados pessoais anteriormente.
4674 <br><br>
4675 Você possui, ainda, os direitos de; (i) obter informações completas sobre as entidades públicas ou privadas com as
4676 quais compartilhamos seus dados pessoais; (ii) opor-se ao tratamento de dados pessoais ante ao não cumprimento da
4677 legislação aplicável; (iii) solicitar a revisão de decisão baseada no tratamento automatizado de dados pessoais e;
4678 (iv) reclamar uma possível violação de seus dados pessoais para a Autoridade Nacional de Proteção de Dados Pessoais
4679 (ANPD).
4680 <br><br>
4681 Para exercer quaisquer dos direitos acima listados, você deverá entrar em contato conosco aqui.
4682 <br><br>
4683 Envidaremos nossos melhores esforços para atender o seu pedido de forma clara, célere e segura.
4684 <br><br>
4685
4686
4687 <b>8. Políticas de terceiros e atualizações desta política</b><br>
4688 Não somos responsáveis pelas práticas de privacidade de terceiros. Portanto, sempre quando você for direcionado a
4689 outro domínio que não o Portal Senac SP e/ou tenha acesso, em decorrência de sua relação conosco, a serviços de
4690 terceiros por nós não controlados, recomendamos que você analise as suas respectivas declarações de privacidade,
4691 entrando diretamente em contato com o terceiro responsável em caso de dúvidas.
4692 <br><br>
4693 Poderemos, ocasionalmente, atualizar a presente Política. Sempre quando ocorrer alguma alteração material
4694 significativa, como sobre a finalidade para a qual tratamos os seus dados pessoais, bem como a forma e duração do
4695 tratamento, utilizaremos esforços razoáveis para que você tenha ciência das modificações.
4696 <br><br>
4697
4698
4699 <b>9. Dúvidas?</b><br>
4700 Se você tiver quaisquer dúvidas sobre esta Política ou como tratamos os seus dados pessoais, entre em contato pelo
4701 e-mail privacidade@sp.senac.br.
4702 <br><br>
4703 <b>Encarregado de Dados do Senac (DPO):</b><br>
4704 Fernando Sátiro Pereira<br>
4705 Gerente de Tecnologia da Informação do Senac São Paulo<br>
4706 Contato: privacidade@sp.senac.br
4707 <br><br>
4708 <a href="https://www.sp.senac.br/documents/d/guest/politica_de_privacidade_senac_sp_julho2020_site" target="_blank">Confira a versão anterior da nossa política</a>
4709 <br><br>
4710
4711 </p>
4712
4713
4714 </div>
4715
4716 <div class="ssp-card-registro-interesse__check-item">
4717 <input type="checkbox" name="" value="" id="check-politica-privacidade">
4718 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
4719 </div>
4720
4721 <div class="text-center mt-5">
4722
4723 <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>
4724
4725 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p>
4726
4727 </div>
4728
4729 </div>
4730
4731 <#else>
4732
4733 <div class="ssp-card-registro-interesse emed">
4734
4735 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4736
4737 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4738
4739 <div class="emed-select-group">
4740
4741 <h3 class="ssp-card-registro-interesse__title-modal"></h3>
4742
4743 <div id="unidades-registro-interesse">
4744
4745 <h4 class="ssp-card-registro-interesse__title-section-itens">Escolha uma unidade</h4>
4746
4747 <div id="select-unidades-registro-interesse">
4748 <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select>
4749 </div>
4750
4751 <div class="ssp-card-registro-interesse__add-mais">
4752 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a>
4753
4754
4755
4756 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a>
4757 </div>
4758
4759 </div>
4760
4761 </div>
4762
4763
4764 <div id="periodo-registro-interesse">
4765
4766 <p class="ssp-card-registro-interesse__title-section-itens">Período:</p>
4767
4768 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4769 <div class="ssp-card-registro-interesse__check-item">
4770 <input type="checkbox" name="" value="M" id="periodo-m">
4771 <label for="periodo-m">Manhã</label>
4772 </div>
4773
4774 <div class="ssp-card-registro-interesse__check-item">
4775 <input type="checkbox" name="" value="T" id="periodo-t">
4776 <label for="periodo-t">Tarde</label>
4777 </div>
4778
4779 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4780 <input type="checkbox" name="" value="" id="check-todos-periodos">
4781 <label for="check-todos-periodos">Todos</label>
4782 </div>
4783
4784 </div>
4785
4786 </div>
4787
4788 <div id="turmas-registro-interesse">
4789
4790 <p class="ssp-card-registro-interesse__title-section-itens">Turma:</p>
4791
4792 <div class="ssp-card-registro-interesse__check-itens-content turmas-registro-interesse">
4793
4794 <div class="ssp-card-registro-interesse__check-item">
4795 <input type="checkbox" name="" value="1" id="primeiro">
4796 <label for="primeiro">1º ano</label>
4797 </div>
4798
4799 <div class="ssp-card-registro-interesse__check-item">
4800 <input type="checkbox" name="" value="2" id="segundo">
4801 <label for="segundo">2º ano</label>
4802 </div>
4803
4804 <div class="ssp-card-registro-interesse__check-item">
4805 <input type="checkbox" name="" value="3" id="terceiro">
4806 <label for="terceiro">3º ano</label>
4807 </div>
4808
4809 </div>
4810
4811 </div>
4812
4813 <div id="msg-transferencia-emed">
4814
4815 <div class="transferencia-emed-title">
4816 <i class="fas fa-comment-exclamation"></i>
4817 <p>Quer se transferir de escola?</p>
4818 </div>
4819
4820 <div class="transferencia-emed-link">
4821 <a href="#">Fale direto com a unidade de interesse.</a>
4822 </div>
4823
4824 </div>
4825
4826 <div class="ssp-card-registro-interesse__card-politica">
4827
4828 <p class="ssp-card-registro-interesse__card-politica-title">
4829 <strong>Política de Privacidade do Senac São Paulo </strong>
4830 </p>
4831
4832 <p>Data de publicação 06/08/2024</p>
4833
4834 <p class="ssp-card-registro-interesse__card-politica-text">
4835 O Serviço Nacional de Aprendizagem Comercial - Senac,
4836 Administração no Estado de São Paulo (Senac SP) zela pela privacidade e proteção dos dados pessoais de todos aqueles
4837 com quem se relaciona.
4838 </p>
4839
4840 <p class="ssp-card-registro-interesse__card-politica-text">
4841
4842 A presente Política de Privacidade tem o objetivo de informar sobre quais dados pessoais a seu respeito são
4843 coletados; por qual motivo os coletamos; com quem os compartilhamos; por quanto tempo os mantemos conosco; quais as
4844 medidas de segurança que adotamos; e quais os direitos que você tem.
4845 <br><br>
4846 É importante que você leia esta Política com atenção, bem como a consulte periodicamente para verificar possíveis
4847 alterações no que diz respeito ao tratamento de seus dados pessoais.
4848 <br><br>
4849 Em caso de dúvidas, entre em contato via e-mail indicado no final deste documento.
4850 <br><br>
4851 <b>1. Quem somos nós?</b><br>
4852 O Senac SP é a Administração Regional do Senac no Estado de São Paulo. O Senac SP está inscrito no CNPJ sob o nº
4853 03.709.814/0001-98 e tem sede à Rua Dr. Vila Nova, 228, 7º andar, na cidade de São Paulo, Estado de São Paulo. Para
4854 fins da Lei Geral de Proteção de Dados Pessoais (Lei nº 13.709/2018, LGPD) e desta Política, o Senac SP é
4855 controlador dos dados pessoais.
4856 <br><br>
4857 <b>2. O que você precisa saber antes de ler esta política?</b>
4858 <br>
4859 Dados pessoais são todas as informações que identificam ou permitam a sua identificação. Por exemplo, seu nome, CPF,
4860 e-mail, endereço, dados de contato, dados de conta bancária, entre outros. Incluem-se nesse conceito os dados
4861 pessoais sensíveis, conforme definição a seguir:
4862 <br><br>
4863 Dados pessoais sensíveis são as informações que revelam ou cujo tratamento venha revelar origem racial ou étnica,
4864 convicção religiosa, opinião política, filiação à sindicato ou à organização de caráter religioso, filosófico ou
4865 político, dados de saúde ou sobre a vida sexual, dado genético ou biométrico.
4866 <br><br>
4867 Encarregado é o seu canal de contato sobre assuntos relacionados à privacidade e à proteção de dados pessoais. Se
4868 você tiver qualquer dúvida sobre como os seus dados pessoais ou de seus dependentes/beneficiários são tratados por
4869 nós, é ele quem vai ajudar.
4870 <br><br>
4871 Titular é a pessoa física a quem se referem os dados pessoais objeto do tratamento.
4872 <br><br>
4873 Tratamento significa qualquer operação realizada com dados pessoais, tais como coleta, produção, classificação,
4874 utilização, acesso, processamento, armazenamento, eliminação, modificação, compartilhamento, transferência, entre
4875 outros.
4876 <br><br>
4877 Sempre que houver menção aos "Termos de Uso do Senac SP", "Nós" ou "Nossos", estaremos nos referindo à instituição
4878 descrita no tópico "Quem somos nós". Da mesma forma, toda vez que mencionarmos "você", "seu" ou "sua", estamos nos
4879 referindo a você, titular de dados pessoais, que possui relação com o Senac SP na qualidade de pessoa interessada,
4880 candidato a aluno, aluno e/ou ex-aluno, terceiros relacionados a candidatos ou alunos usuário de nossa rede wi-fi.
4881 <br><br>
4882 <b>3. Quais dados pessoais são tratados e por quê?</b>
4883 <br>
4884 O Senac SP realiza, a depender de sua relação conosco, o tratamento dos dados pessoais a seguir identificados para
4885 atendimento às finalidades ora descritas, conforme aplicável:
4886 <br><br>
4887 <b>Visitante / Interessado</b>
4888 <br>
4889 <b>Atividade: Navegação</b>
4890 <br>
4891 Dados pessoais: Endereço de IP com data e hora, informações sobre o dispositivo utilizado para a navegação e tipo de
4892 navegador utilizado, localização do dispositivo, sequência de cliques, termos pesquisados no Portal Senac SP, origem
4893 do tráfego.
4894 <br><br>
4895 Finalidade: Os dados pessoais são utilizados para permitir a análise do tráfego do Portal Senac SP; viabilizar o
4896 envio de anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses;
4897 aprimorar as funcionalidades do Portal Senac SP; monitorar fraudes e segurança, inclusive detectando e prevenindo
4898 ataques cibernéticos ou tentativas de roubo de identidade; atender exigências legais.
4899 <br><br>
4900 </p>
4901
4902 <hr>
4903
4904 <p class="ssp-card-registro-interesse__card-politica-text">
4905 <br>
4906 <b>Atividade: Cadastro</b><br>
4907 Dados pessoais: Nome, nome social, CPF, data de nascimento, sexo, documento de identificação civil, endereço,
4908 telefone.
4909 <br><br>
4910 Finalidade: Os dados pessoais são utilizados para cadastro na base de dados do Senac SP, havendo validação do
4911 cadastro por duplo fator de autenticação.
4912 <br>
4913 </p>
4914
4915 <hr>
4916
4917 <p class="ssp-card-registro-interesse__card-politica-text">
4918 <br>
4919 <b>Atividade: Inscrição em eventos</b><br>
4920 Dados pessoais: Nome, nome social/afetivo, estado civil, RG, CPF, e-mail, telefone, endereço, raça, evento
4921 pretendido, dado sobre deficiência, formação acadêmica, e situação profissional.
4922 <br><br>
4923 Finalidade: Os dados pessoais são utilizados para viabilizar sua inscrição e participação em eventos promovidos pelo
4924 Senac SP que não tenham participação restrita a alunos matriculados em nossos cursos.
4925 <br>
4926 </p>
4927
4928 <hr>
4929
4930 <p class="ssp-card-registro-interesse__card-politica-text">
4931 <br>
4932 <b>Atividade: Comunicação e Marketing</b><br>
4933 Dados pessoais: Nome, telefone, e-mail, empresa para qual trabalha, cidade, informações fornecidas voluntariamente
4934 em mensagens nos nossos canais de atendimento e redes sociais.
4935 <br><br>
4936 Finalidade: Os dados pessoais são utilizados para responder perguntas, dúvidas, sugestões, elogios ou reclamações;
4937 realizar estudos para entender demandas e necessidades relacionadas aos nossos cursos/eventos; viabilizar o envio de
4938 anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses.
4939 <br>
4940 </p>
4941
4942 <hr>
4943
4944 <p class="ssp-card-registro-interesse__card-politica-text">
4945 <br>
4946 <b>Candidato a aluno</b><br>
4947 <b>Atividade: Processo seletivo</b><br>
4948 Dados pessoais: Nome, nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo,
4949 número de inscrição, RG/RNE/Passaporte, CPF, filiação, formação acadêmica, experiência profissional, informação
4950 sobre deficiência, resultados de provas, dados tornados manifestamente públicos em plataformas como LinkedIn e
4951 Lattes, dentre outros, conforme exigido a depender do processo seletivo.
4952 <br><br>
4953 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsáveis legais em caso de candidato a aluno
4954 menor de idade.
4955 <br><br>
4956 Finalidade: Os dados pessoais são utilizados, conforme necessário para cada processo seletivo, para fins de
4957 viabilizar sua inscrição e participação em processos seletivos; permitir a seleção de alunos conforme critérios
4958 previamente informados em editais e exigido em leis/normas setoriais aplicáveis; enviar informações sobre o processo
4959 seletivo, inclusive lembrete da proximidade da data de realização de provas; disponibilizar lista de classificação;
4960 responder perguntas, dúvidas, sugestões, elogios ou reclamações; enviar anúncios, ofertas e/ou informações sobre
4961 cursos, eventos e/ou benefícios de acordo com seus interesses.
4962 <br>
4963 </p>
4964
4965 <hr>
4966
4967 <p class="ssp-card-registro-interesse__card-politica-text">
4968 <br>
4969 <b>Atividade: Bolsas de estudo</b><br>
4970 Dados pessoais: Nome, nome social/afetivo, estado civil, RG, CPF, e-mail, telefone, endereço, raça, curso
4971 pretendido, dado sobre deficiência, formação acadêmica, e situação profissional, familiar e domiciliar (incluindo
4972 renda bruta de pessoas do mesmo grupo familiar identificadas pelo nome).
4973 <br><br>
4974 Finalidade: Os dados pessoais são utilizados para selecionar candidatos para o recebimento de bolsas de estudo, em
4975 particular do Programa Senac de Gratuidade (PSG).
4976 <br>
4977 </p>
4978
4979 <hr>
4980
4981 <p class="ssp-card-registro-interesse__card-politica-text">
4982 <br>
4983 <b>Aluno</b><br>
4984 <b>Atividade: Matrícula</b><br>
4985 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
4986 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
4987 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
4988 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
4989 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
4990 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
4991 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
4992 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
4993 <br><br>
4994 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
4995 responsáveis legais do aluno se menor de idade.
4996 <br><br>
4997 Finalidade: Os dados pessoais são utilizados para viabilizar a celebração de contrato com você e, consequentemente,
4998 a prestação dos serviços contratados; liberar acesso a sistemas e áreas restritas; cobrar valores decorrentes do seu
4999 contrato conosco; e outras finalidades relacionadas.
5000 <br>
5001 </p>
5002
5003 <hr>
5004
5005 <p class="ssp-card-registro-interesse__card-politica-text">
5006 <br>
5007
5008 <b>Atividade: Jornada Acadêmica</b><br>
5009 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
5010 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
5011 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
5012 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
5013 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
5014 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
5015 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
5016 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
5017 <br><br>
5018 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
5019 responsáveis legais do aluno se menor de idade.
5020 <br><br>
5021 Finalidade: Os dados pessoais são utilizados para registrar e acompanhar o desenvolvimento acadêmico e profissional
5022 do aluno; permitir o contato do Senac SP, por qualquer meio; viabilizar apoio pedagógico e psicopedagógico;
5023 responder suas perguntas, dúvidas, sugestões, elogios ou reclamações; enviar comunicações administrativas como, por
5024 exemplo, sobre alterações em nossas políticas; monitorar o desenvolvimento de atividades de estágio; permitir a
5025 realização de intercâmbio acadêmico.
5026 <br>
5027 </p>
5028
5029 <hr>
5030
5031 <p class="ssp-card-registro-interesse__card-politica-text">
5032 <br>
5033 <b>Atividade: Bolsas de estudo</b><br>
5034 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
5035 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
5036 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
5037 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
5038 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
5039 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
5040 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
5041 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
5042 <br><br>
5043 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
5044 responsáveis legais do aluno se menor de idade.
5045 <br><br>
5046 Finalidade: Os dados pessoais são utilizados para avaliar e monitorar o cumprimento de requisitos para o
5047 fornecimento de bolsas de estudo.
5048 <br>
5049 </p>
5050
5051 <hr>
5052
5053 <p class="ssp-card-registro-interesse__card-politica-text">
5054 <br>
5055
5056
5057 <b>Atividade: Benefícios</b><br>
5058 Dados pessoais: Instituições de ensino possuem diferentes vínculos com os alunos, relativos a variadas modalidades
5059 de ensino, exigindo, consequentemente, o tratamento de distintos tipos de dados pessoais como, por exemplo, nome,
5060 nome social/afetivo, telefone, e-mail, endereço, nacionalidade, data de nascimento, sexo, RG/RNE/Passaporte, CPF,
5061 número de matrícula, filiação, formação acadêmica, experiência profissional, informação sobre deficiência,
5062 resultados de provas, histórico acadêmico, fotos e gravações de imagem e voz, informações de pagamento (dados de
5063 cartão, endereço de cobrança, entre outros), atestados médicos, curso, condição socioeconômica, empresa na qual
5064 trabalha, cargo, desempenho em estágio e outros programas, informações de dispositivos eletrônicos, dentre outros,
5065 constantes em acervo acadêmico ou decorrentes da sua relação com o Senac SP.
5066 <br><br>
5067 Podem, ainda, ser coletados dados, por exemplo, de nome e CPF de responsável financeiro pelo aluno e/ou dos
5068 responsáveis legais do aluno se menor de idade.
5069 <br><br>
5070 Finalidade: Os dados pessoais são utilizados para fins de oferecer benefícios ligados ao objeto do seu contrato
5071 educacional com o Senac SP, como, por exemplo, o download gratuito de programas de computador devidamente
5072 licenciados, descontos em serviços prestados por nossos parceiros ou para aquisição de obras da Editora Senac, entre
5073 outros; enviar anúncios, ofertas e/ou informações sobre cursos, eventos e/ou benefícios de acordo com seus
5074 interesses; viabilizar análises e estudos relacionados ao interesse por e utilização de determinados benefícios,
5075 inclusive para aperfeiçoamento das nossas parcerias comerciais.
5076 <br>
5077 </p>
5078
5079 <hr>
5080
5081 <p class="ssp-card-registro-interesse__card-politica-text">
5082 <br>
5083 <b>Atividade: Procedimentos internos</b><br>
5084 Finalidade: Os dados pessoais são utilizados para fins de gestão da oferta, qualidade e aprimoramento dos serviços
5085 prestados pelo Senac SP, inclusive por meio do envio de pesquisas; viabilizar estratégia de aprendizagem remota e
5086 presencial; fornecer serviços de suporte; realizar estudos para entender demandas e necessidades relacionadas aos
5087 nossos produtos/serviços; preparar e disponibilizar relatórios de auditoria e gerenciais; fornecer segunda via e/ou
5088 cópia de documentos como diploma e histórico escolar; criar grupos de representantes de alunos para facilitar o
5089 diálogo e endereçamento de demandas; informar sobre a possibilidade de participação em processos acadêmicos e de
5090 pesquisa.
5091 <br>
5092 </p>
5093
5094 <hr>
5095
5096 <p class="ssp-card-registro-interesse__card-politica-text">
5097 <br>
5098
5099
5100 <b>Atividade: Obrigações legais e exercícios de direito</b><br>
5101 Finalidade: Os dados pessoais são utilizados para atender políticas públicas, como as assistenciais e de transporte
5102 escolar; viabilizar a condução do censo escolar; realizar as divulgações exigidas por normas legais ou de interesse
5103 do Senac SP, como lista de aprovados e conquistas obtidas; enviar dados ao MEC; inscrever estudantes para, por
5104 exemplo, realizar o Exame Nacional de Desempenho de Estudantes (Enade); colaborar com o cumprimento de ordem
5105 judicial, de autoridade competente ou de órgão fiscalizador.
5106 <br>
5107 </p>
5108
5109 <hr>
5110
5111 <p class="ssp-card-registro-interesse__card-politica-text">
5112 <br>
5113
5114 <b>Atividade: Pesquisas e desenvolvimento</b><br>
5115 Finalidade: Os dados pessoais poderão ser utilizados para entrar em contato e conduzir pesquisas para identificar
5116 pontos de melhoria nos produtos e serviços, permitir a mensuração de qualidade dos cursos, permitir a execução do
5117 programa de trabalho do Senac SP, bem como para conduzir pesquisas que decorram de lei e/ou regulamento ao qual o
5118 Senac SP está sujeito.
5119 <br>
5120 </p>
5121
5122 <hr>
5123
5124 <p class="ssp-card-registro-interesse__card-politica-text">
5125 <br>
5126
5127 <b>Atividade: Monitoramento</b><br>
5128 Finalidade: Os dados pessoais são utilizados para fins de monitorar a segurança dos ambientes de ensino e
5129 aprendizagem; prevenir fraudes, prática de condutas ilícitas e incidentes de segurança; cumprir exigências, por
5130 exemplo, de registro de acesso às aplicações estabelecidas no Marco Civil da Internet - Lei nº 12.965/2014.
5131 <br>
5132 </p>
5133
5134 <hr>
5135
5136 <p class="ssp-card-registro-interesse__card-politica-text">
5137 <br>
5138
5139 <b>Ex-aluno</b><br>
5140 <b>Atividade: Relacionamento, pesquisa, obrigações legais e exercício de direitos</b><br>
5141 Dados pessoais: Nome, telefone, e-mail, endereço, CPF, número de matrícula, formação acadêmica, histórico acadêmico,
5142 fotos, dentre outros, a depender da modalidade de ensino realizada no Senac SP.
5143 <br><br>
5144 Finalidade: Os dados pessoais são utilizados para atender obrigações do Senac SP de manutenção de registros
5145 escolares; acompanhar o seu desenvolvimento (por exemplo, com a análise da sua empregabilidade em decorrência da
5146 formação recebida); responder perguntas, dúvidas, sugestões, elogios ou reclamações; enviar anúncios, ofertas e/ou
5147 informações sobre cursos, eventos e/ou benefícios de acordo com seus interesses; entrar em contato e conduzir
5148 pesquisas com fins de identificar motivação para realização de cursos e inserção produtiva no mercado, bem como para
5149 conduzir pesquisas que decorram de lei e/ou regulamento ao qual o Senac SP está sujeito; garantir o cumprimento de
5150 obrigação legal ou regulatória e/ou o exercício de direitos do Senac SP, inclusive em processos judiciais,
5151 administrativos e arbitrais; atender consulta de terceiros acerca do seu relacionamento com o Senac SP; colaborar
5152 com o cumprimento de ordem judicial, de autoridade competente, órgão fiscalizador ou com pedido de entidade de
5153 fornecimento de dados sobre você no caso de, por exemplo, concursos públicos.
5154 <br>
5155 </p>
5156
5157 <hr>
5158
5159 <p class="ssp-card-registro-interesse__card-politica-text">
5160 <br>
5161 <b>Terceiros relacionados a candidatos e/ou alunos</b><br>
5162 <b>Atividade: Atuação de responsável legal e pagamento pelo responsável financeiro. Seleção de bolsistas</b><br>
5163 Dados pessoais: Nome, estado civil, RG, CPF, e-mail, telefone, endereço, renda bruta, grau de parentesco com
5164 aluno/candidato a aluno, dados de pagamento, dados de utilização de portais do Senac SP (endereço de IP, login).
5165 <br><br>
5166 Finalidade: Os dados pessoais são utilizados para permitir a celebração de contratos com menores e a gestão da vida
5167 escolar por responsável legal; viabilizar operações de pagamento, pelo responsável financeiro; permitir a seleção de
5168 candidatos para oferta de bolsas de estudos; atender requisições de autoridades e exercício regular de direito pelo
5169 Senac SP.
5170 <br>
5171 </p>
5172
5173 <hr>
5174
5175 <p class="ssp-card-registro-interesse__card-politica-text">
5176 <br><br>
5177 <b>Usuário Wi-Fi</b><br>
5178 <b>Atividade: Uso da rede wi-fi CONECTA SENAC</b><br>
5179 Dados pessoais: Nome, e-mail, CPF, endereço de IP com data e hora, informações sobre o dispositivo utilizado para a
5180 navegação e tipo de navegador utilizado (inclusive endereço MAC), localização do dispositivo.
5181 <br><br>
5182 Finalidade: Os dados pessoais são utilizados para viabilizar o uso da rede wi-fi "Conecta_Senac"; atender leis e
5183 outros normativos aplicáveis, bem como ordem de autoridades, em particular em casos de investigação; avaliar
5184 desempenho da rede e realizar diagnóstico de problemas, solucionando-os; comunicar sobre manutenção da rede e/ou
5185 outras informações relevantes; proteger você, terceiros e o Senac.
5186 <br><br>
5187
5188
5189 Os dados pessoais acima elencados podem ser coletados primordialmente das seguintes fontes: (a) diretamente de você
5190 ou da pessoa autorizada por você; (b) fornecedores do Senac SP, como empresas prestadoras de serviços; (c) sistemas
5191 de monitoramento de ambientes Senac SP; (d) autoridades públicas, judiciais e administrativas. Você é a única pessoa
5192 responsável pela exatidão, veracidade e autenticidade das informações fornecidas diretamente fornecidas.
5193 <br><br>
5194 Trataremos os dados pessoais conforme hipóteses autorizadoras listadas na LGPD, notadamente: (i) cumprimento de
5195 obrigação legal ou regulatória, (ii) execução de contrato, (iii) exercício regular de direitos, e (iv) legítimo
5196 interesse do Senac SP ou de terceiros. Para os casos em que a lei exija a obtenção de seu consentimento e/ou de seu
5197 responsável legal, atuaremos de modo a garantir que você seja devidamente informado acerca da necessidade da
5198 autorização e consequências da sua recusa, para que você possa manifestar livremente a sua decisão.
5199 <br><br>
5200 O Senac SP utilizará os seus dados pessoais para finalidades compatíveis com as informadas nesta Política e sempre
5201 que entender haver base legal para o tratamento posterior nos termos da LGPD.
5202 <br><br>
5203
5204
5205 <b>4. Com quem compartilhamos os seus dados pessoais?</b><br>
5206 Poderemos compartilhar os seus dados pessoais com entidades que compõem a nossa estrutura organizacional
5207 (Administração Nacional e as demais Administrações Regionais), com empresas com as quais mantemos algum tipo de
5208 relação comercial, com seu responsável legal e/ou financeiro ou, ainda, com órgãos públicos, tais como parceiros
5209 comerciais, instituições bancárias, escritórios de advocacia, empresas de suporte aos nossos sistemas, bureaus de
5210 crédito, consultorias contábeis, órgãos públicos e o Poder Judiciário. Os seus dados pessoais podem ser
5211 compartilhados para finalidades legítimas da seguinte maneira:
5212 <br><br>
5213 - Para condução das atividades de tratamento de dados pessoais descritas nesta Política e/ou decorrentes de seu
5214 relacionamento e contrato de prestação de serviços conosco;
5215 <br><br>
5216 - Para permitir que terceiros forneçam serviços para o Senac SP e/ou acompanhem a prestação de serviços contratada,
5217 conforme aplicável;
5218 <br><br>
5219 - Para obedecer as nossas obrigações legais, regulatórias ou contratuais, ou responder a um processo judicial ou
5220 administrativo, auditoria ou solicitações legais por autoridades competentes, quando entendermos que estamos
5221 legalmente obrigados a fazê-lo ou, ainda, para fins de atendimento a ofícios relacionados a processos seletivos e/ou
5222 concursos públicos dos quais você participa. As categorias de destinatários incluem, por exemplo, contrapartes em
5223 contratos, órgãos judiciais e governamentais;
5224 <br><br>
5225 - Para exercício legítimo de direito em processo judicial, administrativo ou arbitral, inclusive prevenindo lesão ou
5226 ameaça a direito;
5227 <br><br>
5228 - Quando for necessário para proteger você, o Senac SP e seus interesses legítimos e/ou terceiros;
5229 <br><br>
5230 - Como parte de due diligence corporativa e/ou due diligence relativa à fusão, aquisição, alteração societária, ou
5231 em casos de recuperação judicial ou falência, nós podemos divulgar os seus dados pessoais ao potencial vendedor ou
5232 comprador, novo prestador de serviços e respectivos assessores, na medida do quanto necessário e adequado para o
5233 atingimento da aludida finalidade;
5234 <br><br>
5235 - Com o seu consentimento legalmente obtido, isto é dado de forma voluntária e sem que você sofra qualquer
5236 consequência adversa de sua decisão que negar ou revogar o seu consentimento.
5237 <br><br>
5238
5239
5240 Informações agregadas e anonimizadas poderão ser livremente compartilhadas.
5241 <br><br>
5242 Para resguardar a sua privacidade, utilizamos instrumentos contratuais e auditorias para assegurar que os terceiros
5243 que recebam os seus dados pessoais confiram a ele a mesma proteção que nós proporcionamos.
5244 <br><br>
5245 Atualmente, apenas compartilhamos os seus dados pessoais em território nacional. Caso haja transferência dos seus
5246 dados pessoais para fora do Brasil, nos certificaremos de que essa transferência ocorra em observância à legislação
5247 brasileira e que você seja informado de tal compartilhamento, sempre que exigido pela legislação aplicável.
5248 <br><br>
5249 Você pode ter mais informações sobre os terceiros com quem compartilhamos os seus dados pessoais por meio de
5250 requisição específica, conforme indicado no tópico que trata sobre os seus direitos.
5251 <br><br>
5252
5253
5254 <b>5. Por quanto tempo tratamos os seus dados pessoais?</b><br>
5255 Os seus dados pessoais serão tratados pelo tempo que for necessário para cumprir a finalidade para a qual eles foram
5256 coletados, a menos que um período de retenção mais longo seja necessário para cumprir obrigações legais, resolver
5257 disputas, proteger nossos ativos ou cumprir acordos judiciais/extrajudiciais.
5258 <br><br>
5259 Para determinar o período de retenção de seus dados pessoais, além do critério acima indicado, baseamo-nos nos
5260 seguintes critérios:
5261 <br><br>
5262 - Existência de uma obrigação legal ou contratual de reter os dados pessoais;
5263 <br><br>
5264 - Necessidade dos dados pessoais para investigação, auditoria ou exercício regular de nossos direitos em processos
5265 judiciais, administrativos ou arbitrais;
5266 <br><br>
5267 - Utilidade dos dados pessoais para fins de manutenção de registros precisos, especialmente financeiros e
5268 educacionais.
5269 <br><br>
5270 Podemos manter os seus dados pessoais, de forma anonimizada, ou seja, que não mais se refere a você pessoalmente,
5271 para fins estatísticos, sem limite de tempo, na medida em que tenhamos interesse legítimo e respaldo legal.
5272 <br><br>
5273
5274
5275 <b>6. Como mantemos seus dados pessoais seguros?</b><br>
5276 Adotamos medidas administrativas e técnicas, continuamente monitoradas e revisadas, de acordo com os avanços
5277 tecnológicos, aptas a manter os seus dados pessoais sob nossa responsabilidade protegidos de acessos não autorizados
5278 e de situações acidentais ou ilícitas de destruição, perda, alteração, comunicação ou qualquer outra forma de
5279 tratamento inadequado ou ilícito.
5280 <br><br>
5281 Nossos sistemas eletrônicos e arquivos físicos atendem aos padrões de segurança da informação adequados, tais como:
5282 <br><br>
5283 - Controle restrito de acesso interno;
5284 <br><br>
5285 - Proteção contra acessos não autorizados com a utilização de instrumentos de dupla autenticação, senha e chaves;
5286 <br><br>
5287 - Manutenção de inventário dos acessos, com o momento, a duração, a identificação do responsável pelo acesso e dados
5288 acessados.
5289 <br><br>
5290 Quaisquer comunicações legalmente exigidas sobre eventuais incidentes de segurança que possam acarretar perdas de
5291 disponibilidade, confidencialidade ou integridade dos dados pessoais sob nossa responsabilidade serão notificadas
5292 adequadamente às autoridades competentes e aos titulares afetados.
5293 <br><br>
5294
5295
5296 <b>7. Quais são os seus direitos?</b><br>
5297 Você, enquanto titular de dados pessoais, possui os seguintes direitos relativos aos seus dados pessoais:
5298 <br><br>
5299 <b>Direito X Explicação</b><br>
5300 1. Confirmação da existência de tratamento de seus dados pessoais<br>
5301 Esse direito permite que você solicite a confirmação acerca da existência de tratamento dos seus dados pessoais.
5302 <br><br>
5303 2. Acesso aos dados pessoais<br>
5304 Esse direito permite que você solicite uma cópia dos seus dados pessoais.
5305 <br><br>
5306 3. Correção de dados pessoais incompletos, inexatos ou desatualizados<br>
5307 Esse direito permite que você solicite a correção e/ou retificação dos seus dados pessoais, caso identifique que
5308 estão incompletos, inexatos ou desatualizados.
5309 <br><br>
5310 4. Anonimização, bloqueio ou eliminação de dados pessoais<br>
5311 Esse direito permite que você solicite a anonimização, o bloqueio ou a eliminação dos seus dados pessoais, se
5312 desnecessários, excessivos ou tratados de forma incorreta.
5313 <br><br>
5314 É possível, ainda, que você solicitea eliminação dos dados pessoais tratados com o seu consentimento e desde que
5315 ausente outra finalidade legitimadora de sua conservação, como a existência de obrigação legal ou regulatória a ser
5316 por nós atendida.
5317 <br><br>
5318 <br><br>
5319 O exercício desse direito também dependerá da nossa possibilidade técnica de atender o pedido.
5320 <br><br>
5321 <b>5. Portabilidade dos dados pessoais</b><br>
5322 Esse direito permite que você solicite o envio de seus dados pessoais para outras entidades, desde que não haja
5323 violação da nossa propriedade intelectual.
5324 <br><br>
5325 A requisição de exercício desse direito não implica na eliminação de dados pessoais.
5326 <br><br>
5327 <b>6. Não fornecimento ou revogação do consentimento</b><br>
5328 Esse direito permite que você não forneça ou revogue o seu consentimento, o que não afetará a legalidade de qualquer
5329 tratamento de dados pessoais anteriormente.
5330 <br><br>
5331 Você possui, ainda, os direitos de; (i) obter informações completas sobre as entidades públicas ou privadas com as
5332 quais compartilhamos seus dados pessoais; (ii) opor-se ao tratamento de dados pessoais ante ao não cumprimento da
5333 legislação aplicável; (iii) solicitar a revisão de decisão baseada no tratamento automatizado de dados pessoais e;
5334 (iv) reclamar uma possível violação de seus dados pessoais para a Autoridade Nacional de Proteção de Dados Pessoais
5335 (ANPD).
5336 <br><br>
5337 Para exercer quaisquer dos direitos acima listados, você deverá entrar em contato conosco aqui.
5338 <br><br>
5339 Envidaremos nossos melhores esforços para atender o seu pedido de forma clara, célere e segura.
5340 <br><br>
5341
5342
5343 <b>8. Políticas de terceiros e atualizações desta política</b><br>
5344 Não somos responsáveis pelas práticas de privacidade de terceiros. Portanto, sempre quando você for direcionado a
5345 outro domínio que não o Portal Senac SP e/ou tenha acesso, em decorrência de sua relação conosco, a serviços de
5346 terceiros por nós não controlados, recomendamos que você analise as suas respectivas declarações de privacidade,
5347 entrando diretamente em contato com o terceiro responsável em caso de dúvidas.
5348 <br><br>
5349 Poderemos, ocasionalmente, atualizar a presente Política. Sempre quando ocorrer alguma alteração material
5350 significativa, como sobre a finalidade para a qual tratamos os seus dados pessoais, bem como a forma e duração do
5351 tratamento, utilizaremos esforços razoáveis para que você tenha ciência das modificações.
5352 <br><br>
5353
5354
5355 <b>9. Dúvidas?</b><br>
5356 Se você tiver quaisquer dúvidas sobre esta Política ou como tratamos os seus dados pessoais, entre em contato pelo
5357 e-mail privacidade@sp.senac.br.
5358 <br><br>
5359 <b>Encarregado de Dados do Senac (DPO):</b><br>
5360 Fernando Sátiro Pereira<br>
5361 Gerente de Tecnologia da Informação do Senac São Paulo<br>
5362 Contato: privacidade@sp.senac.br
5363 <br><br>
5364 <a href="https://www.sp.senac.br/documents/d/guest/politica_de_privacidade_senac_sp_julho2020_site" target="_blank">Confira a versão anterior da nossa política</a>
5365 <br><br>
5366
5367 </p>
5368
5369 </div>
5370
5371 <div class="ssp-card-registro-interesse__check-item">
5372 <input type="checkbox" name="" value="" id="check-politica-privacidade">
5373 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
5374 </div>
5375
5376 <div class="text-center mt-5">
5377
5378 <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>
5379
5380 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p>
5381
5382 </div>
5383
5384 </div>
5385
5386 </#if>
5387 </section>
5388
5389 <section id="modal-registro-interesse-sucesso" class="ssp-modal-registro-interesse d-none">
5390
5391 <div class="ssp-card-msg-sucesso">
5392
5393 <div class="ssp-card-msg-sucesso__content">
5394 <i class="fas fa-exclamation-circle"></i>
5395 <p>Obrigado por registrar seu interesse!</p>
5396 <p>Acompanhe seu e-mail para ficar por dentro das novidades!</p>
5397 </div>
5398
5399 <div>
5400 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#" id="btn-voltar-home">Voltar para a home</a>
5401 </div>
5402
5403 </div>
5404
5405 </section>
5406
5407 <section id="modal-registro-interesse-erro" class="ssp-modal-registro-interesse d-none">
5408
5409 <div class="ssp-card-msg-erro">
5410
5411 <div class="ssp-card-msg-sucesso__content">
5412 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
5413 <p>Houve um erro ao registrar seu interesse!</p>
5414 <p>Por favor, tente novamente!</p>
5415 </div>
5416
5417 <div>
5418 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#">Voltar para a home</a>
5419 </div>
5420
5421 </div>
5422
5423 </section>
5424
5425 <!-- Aviso para curso de aprendizagem -->
5426
5427 <div id="aviso-curso-aprendizagem" class="ssp-bolsa-formulario__card-aviso-atencao d-none" style="width: 100%;">
5428
5429 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
5430
5431 <div class="ssp-bolsa-formulario__card-aviso-texto">
5432 <p>Para contratar aprendiz, preencha o formulário e entraremos em contato.</p>
5433 </div>
5434
5435 </div>
5436
5437 <!-- modal form de aprendizagem -->
5438
5439 <#if isAprendizagem>
5440
5441 <#assign formId = 48097883 />
5442 <!-- formInstanceId é variável de acordo com o ID do formulário -->
5443 <#assign formPreferences = {"displayDepth": "1", "portletSetupPortletDecoratorId": "barebone", "formInstanceId": "formId"}/>
5444
5445 <section data-lfr-background-image-id="bg-programe-form" class="ssp-section ssp-section-lg-bottom" data-modal="modal">
5446
5447 <div class="container ssp_ct_form_programe">
5448
5449 <button type="button" data-modal="close-form-modal">
5450 fechar
5451 <i class="fas fa-times"></i>
5452 </button>
5453
5454 <@liferay_portlet["runtime"]
5455 portletName="com_liferay_dynamic_data_mapping_form_web_portlet_DDMFormPortlet"
5456 defaultPreferences=freeMarkerPortletPreferences.getPreferences(formPreferences)
5457 />
5458
5459 </div>
5460
5461 </section>
5462
5463 </#if>
5464
5465 <div id="avisoTrampolim" class="ssp-bolsa-formulario__card-aviso-atencao container text-left d-none" style="width: 100%;">
5466 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
5467 <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>
5468 </div>
5469
5470 </div>
5471
5472
5473 <!--modal forma pagto extensao-->
5474 <section id="modalFormaPagtoExt" class="modal-extensao ssp-modal">
5475 <div class="modal-extensao_content">
5476 <i class="fas fa-undo modal-extensao-voltar-icon"><span class="modal-extensao-voltar-txticon">Voltar</span></i>
5477 <h1 class="modal-extensao-condicoes__title">Descontos e Parcelamento</h1>
5478 <div class="row">
5479
5480 <!-- <button class="btn-preco-padrao d-xs-flex d-sm-flex d-lg-none d-xl-none">
5481 Preço Padrão
5482 <i class="fas fa-chevron-right custom-icon-right"></i>
5483 </button> -->
5484
5485 <div class="col-lg-6 col-sm-12 col-xs-12">
5486
5487 <h2 class="modal-extensao_subtitle">Investimento</h2>
5488
5489 <span class="modal-extensao_preco">R$ <span class="precoVendaOferta"></span></span>
5490 <span class="modal-extensao_txteconomiza">.<b class="modal-extensao_txtverde"></b></span>
5491 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
5492 <i class="fas fa-barcode" aria-hidden="true"></i>
5493 <span class="modal-extensao_txtPag">Boleto Bancário</span>
5494 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoleto"></span></b></span>
5495 <span class="modal-extensao_txtParcela">sem juros</span>
5496 </div>
5497 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
5498 <i class="far fa-credit-card" aria-hidden="true"></i>
5499 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
5500 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoes"></span></b></span>
5501 <span class="modal-extensao_txtParcela">sem juros</span>
5502 </div>
5503 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaPadraoExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p>
5504 </div>
5505
5506 <!-- <hr class="ssp-divisor d-xs-block d-sm-block d-lg-none d-xl-none"> -->
5507
5508 <!-- <button class="btn-preco-ex-aluno d-xs-flex d-sm-flex d-lg-none d-xl-none">
5509 Preço para Contribuintes,<br>alunos e ex-alunos*
5510 <i class="fas fa-chevron-right custom-icon-right"></i>
5511 </button> -->
5512
5513 <div class="col-lg-6 col-sm-12 col-xs-12">
5514 <h2 class="modal-extensao_subtitle mt-4">Valor com 20% de desconto para alunos, ex-alunos e contribuintes Senac</h2>
5515 <span class="modal-extensao_preco">R$ <span class="precoContrExt"></span></span>
5516 <span class="modal-extensao_txteconomiza">Você economiza <b class="modal-extensao_txtverde">R$ <span class="economiaExt"></span> (-20%)</b></span>
5517 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
5518 <i class="fas fa-barcode" aria-hidden="true"></i>
5519 <span class="modal-extensao_txtPag">Boleto Bancário</span>
5520 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoletoExt"></span></b></span>
5521 <span class="modal-extensao_txtParcela">sem juros</span>
5522 </div>
5523 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
5524 <i class="far fa-credit-card" aria-hidden="true"></i>
5525 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
5526 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoesExt"></span></b></span>
5527 <span class="modal-extensao_txtParcela">sem juros</span>
5528 </div>
5529 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaContrExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p>
5530 </div>
5531 <div class="col-lg-6 col-sm-12 col-xs-12">
5532 <a target="_blank" href="#">
5533 <button class="btn modal-extensao__btn mt-3 text-uppercase">Comprar</button>
5534 </a>
5535 </div>
5536 <div class="col-lg-6 col-sm-12 col-xs-12">
5537 <button class="btn btn-primary modal-extensao-btn-conheca mt-3" >Conheça os descontos</button>
5538 </div>
5539 </div>
5540 </div>
5541
5542 <div class="modal-extensao_content modal-pergunta-aluno-ext d-none">
5543
5544 <i class="fal fa-times modal-extensao-voltar-icon" style="font-size:25px;"></i>
5545 <h1 class="modal-extensao-condicoes__title">Você é nosso aluno?</h1>
5546 <div class="row">
5547 <div class="col-6 text-right">
5548
5549 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao sim mt-3">Sim</button>
5550
5551 </div>
5552 <div class="col-6 text-left">
5553
5554 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao nao mt-3">Não</button>
5555
5556 </div>
5557 </div>
5558 <div class="row d-none msg-alunoSim">
5559 <div class="col-12 text-center mt-10">
5560 <i class="fas fa-check-circle modal-extensao-ico-check"></i>
5561 <h2 class="modal-extensao-condicoes__subtitle">Boa notícia!</h2>
5562 <p class="modal-extensao-aluno_txtcontent">Você tem 20% de desconto neste curso.<br> Faça seu login e preencha os dados solicitados.</p>
5563 <p class="mb-0">
5564 <a target="_blank" href="#">
5565 <button class="btn modal-extensao-aluno__btn ok mt-3">Fazer Inscrição</button>
5566 </a>
5567 </p>
5568 <p class="mt-0">
5569 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
5570 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button>
5571 </a>
5572 </p>
5573 </div>
5574 </div>
5575 <div class="row d-none msg-alunoNao">
5576 <div class="col-12 text-center mt-10">
5577 <i class="fas fa-percentage modal-extensao-ico-percent"></i>
5578 <h2 class="modal-extensao-condicoes__subtitle">Poxa! Não fique triste...</h2>
5579 <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>
5580 <p class="mb-0">
5581 <a target="_blank" href="#">
5582 <button class="btn modal-extensao-aluno__btn not mt-3">Fazer Inscrição</button>
5583 </a>
5584 </p>
5585 <p class="mt-0">
5586 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
5587 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button>
5588 </a>
5589 </p>
5590 </div>
5591 </div>
5592 </div>
5593 </section>
5594
5595
5596 <!-- Modal Descontos e Parcelamento EMED -->
5597 <div id="modalPagtoEmed" class="ssp-modal">
5598
5599 <div class="ssp-card-modal-forma-pagamento">
5600
5601 <div class="ssp-card-modal-forma-pagamento__header">
5602 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold text-center" style="color:#454F63">Descontos e parcelamentos</h6>
5603 <div class="ssp-modal-emed-btfechar">
5604 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_0"></i>
5605 <span>Fechar</span>
5606 </div>
5607 </div>
5608
5609 <div class="ssp-card-modal-forma-pagamento__body">
5610
5611 <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>
5612
5613 <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>
5614 <span class="ssp-card-modal-emed-ano">/ano</span></p>
5615
5616 <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>
5617 <div class="ssp-card-modal-emed-lineou"><span>ou</span></div>
5618
5619 <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>
5620
5621 <div class="ssp-card-modal-forma-pagamento__tipos">
5622
5623 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" >
5624 <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i>
5625 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5626 <p><strong>Cartão de Crédito +</strong></p>
5627 <p><strong>Boleto Bancário</strong></p>
5628 <!-- <p>1ª parcela em <span>até 4x de R$ <span class="valorParcelaEntradaCartoesBoleto">265,50</span></span> sem juros no cartão</p> -->
5629 <p>1ª parcela no cartão</p>
5630 <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto"></span>x de <br>R$ <span class="precoParcelaCartoesBoleto"></span></span> sem juros no boleto</p>
5631 </div>
5632 </div>
5633
5634
5635 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" >
5636 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
5637 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5638 <p><strong>Cartão de Crédito</strong></p>
5639 <p>(<span class="textoCartoesAceitos">Mastercard, Visa, Elo, American Express, Hipercard</span>)</p>
5640 <p>Em até <span><span class="numParcelaCartoes">12</span>x de R$ <span class="precoParcelaCartoes">34,53</span></span> sem juros</p>
5641 </div>
5642 </div>
5643
5644 <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">
5645 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
5646 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5647 <p><strong>Boleto Bancário</strong></p>
5648 <p>Em até <span><span class="numParcelaBoleto">12</span>x de R$ <span class="precoParcelaBoleto">34,53</span></span> sem juros</p>
5649 </div>
5650 </div>
5651
5652 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-modal-emed-boxoito" data-info="data-para-matricula"><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>
5653
5654 <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>
5655 - Estuda ou estudou no Senac<br>
5656 - É dependente de quem trabalha em empresa contribuinte do Senac<br>
5657 - Estuda ou estudou na rede pública de ensino
5658 </p>
5659
5660 </div>
5661
5662 </div>
5663
5664
5665 <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>
5666
5667
5668
5669 </div>
5670 </div>
5671
5672 <#if isEMED>
5673 <div id="modalAntesCompraEmed" class="ssp-modal">
5674 <div class="ssp-modal-local-realizacao">
5675 <div class="ssp-modal-local-realizacao__title-content">
5676 <h6 class="ssp-modal-local-realizacao__title" style="padding-left:10%;">IMPORTANTE!</h6>
5677 <i class="ssp-card-modal-antes-compra__btn-close ssp-card-modal-forma-pagamento__btn-close"></i>
5678 </div>
5679 <div class="ssp-modal-local-realizacao__texto">
5680 <p class="texto-modal-emed textoEmedModalAntesCompra0010 d-none">
5681
5682 Esta matrícula é válida apenas para a compra do curso de acordo com a escola e o horário já selecionados.<br/>
5683
5684 </p>
5685 <p class="texto-modal-emed textoEmedModalAntesCompra0010Espera d-none">
5686
5687 Saiba como funciona a inscrição para a lista de espera:<br/><br/>
5688 - É válida somente para a <b>compra do curso</b><br/>
5689 - Não garante vaga para o estudante<br/>
5690 - É válida apenas para o curso, horário e escola selecionados<br/>
5691 - Caso surjam vagas, você receberá um e-mail para fazer a matrícula<br/>
5692
5693 </p>
5694 <p class="texto-modal-emed textoEmedModalAntesCompra0020e0030 d-none">
5695
5696 - 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/>
5697 - A inscrição só pode ser solicitada para quem deseja estudar no Senac realizando a compra do curso<br/><br/>
5698 - 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
5699
5700 </p>
5701 <div class="btn ssp-modal-local-realizacao__btn-content">
5702 <button class="btn btn-lg btn-success w-100 mt-3" offercode="" id="btnCompraLocalEmed">Continuar para compra</button>
5703 <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>
5704 </div>
5705 </div>
5706 </div>
5707 </div>
5708
5709 </#if>
5710
5711
5712
5713
5714 <script>
5715 let showedFilters = false
5716 var groupId = themeDisplay.getScopeGroupId();
5717
5718 var urlSearchCursosPorCategory = '/o/senac-curso-services/cursosPorCategoryIds/{groupId}?categoryIds={categoryId}&start=0&end={limit}';
5719
5720 var urlSearchOferta = '/o/senac-oferta-services/ofertasPorCategoryIds/' + groupId
5721
5722 var urlSearchUnidade = '/o/senacsearch/Unidade/{companyId}/{groupId}/{userId}?q=codigoUnidade_pt_BR:{codigoUnidade}';
5723 var urlUnidadeInfoDetalhe = '/o/senac-content-services/unidadeInfoDetalhe/{companyId}/{codigoUnidade}';
5724 var urlSearchCursosPodeGostar = '/o/senac-content-services/cursosVocePodeGostar/{companyId}/{groupId}/{userId}/{articleId}/{limit}';
5725 var urlSearchCursoInfo = '/o/senac-content-services/cursosInfoDetalhe/{groupId}/{cursosInfo}?inscricaoAberta={inscricaoAberta}&bolsaAberta={bolsaAberta}&buscarUnidadesComOferta={buscarUnidadesComOferta}';
5726 var urlRegistroInteresse = '/o/senac-content-services/registroInteresse/';
5727 var urlRegistroInteresseEmailInteressado = '/o/senac-content-services/envioEmailRegistroInteresse/';
5728 var cntSelectUnidades = 1;
5729 var urlPlanoCurso = 'https://www.sp.senac.br/jsp/includeMatdid.jsp?file=/ha1shared/projects/matdid/{codigoFT}-{dataEfetiva}.html';
5730 var urlGetServerT = '/o/senac-content-services/getServerTime';
5731 var urlSearchCursosPodeGostarEmed = '/o/senac-curso-services/cursosPorCategoryIdsFilterAndOr/{groupId}/?categoryIdsOr={tiposDeCurso}&start=0&end={limit}&articleId={articleId}';
5732 var todayG = '';
5733 var codigoFTCursoAprendizagem = 18984;
5734 var globalGroupId = Liferay.ThemeDisplay.getCompanyGroupId();
5735 var isAoVivo = 0;
5736 var nomeFormatoAoVivoDxp = 'Senac Online - ao vivo';
5737 var ofertaUnidadeMap = new Map();
5738 var ultimaUnidade = 0;
5739 var regIndex = new RegExp('\{index\}', 'g');
5740 var linkBotaoCompra = 'http://www.sp.senac.br/login/Login?destino=/ecommerceFrontEnd/?vcw_unidade={codigoUnidade}&vcw_evento={codigoOferta}';
5741 var carregouUltimaOferta = false;
5742 var ofertasMap = new Map();
5743 var codUnidadeSenacAoVivo = '108';
5744 var ofertasComBolsa = false;
5745
5746 //funcao para pegar host do ambiente, se eh teste ou prod (utilizado no servico da bolsa)- 9546
5747 function getServiceEnvironmentHost(){
5748 if(!isAmbienteTeste())
5749 return window.location.origin
5750 else
5751 return 'https://gesportal.sp.senac.br'
5752 }
5753
5754 var hostBolsa = getServiceEnvironmentHost()
5755
5756 // Montar object push - google tag manager - 1
5757 let itensEcommerce = null;
5758 let ofertaSelecionada = null;
5759
5760 const today = new Date;
5761
5762 //categoryId -> cod unidade
5763 var mapUnidadesIds = new Map();
5764 var objsTela = {
5765 unidades: [],
5766 unidadesRegistroInteresse: [],
5767 categoriesIds:[],
5768 ofertasAoVivoTodasUnidades: [],
5769 primeiroChange: true
5770 };
5771 var startOfertaParam = 0;
5772 var endOfertaParam = 25;
5773
5774 var ehCursoTrampolim = false;
5775
5776 const isHibrido = $('input[name="formato"]').data('formato') === 'Presencial + EAD';
5777
5778 var textoFormatoHibrido = "";
5779 var temTextoParaFormatoHibrido = false;
5780
5781 //Validar se o campo textoFormatoHibrido existe e se não está vazio
5782 if(isHibrido){
5783 textoFormatoHibrido = $('input[name="textoFormatoHibrido"]').val();
5784 if(typeof textoFormatoHibrido !== 'undefined'){
5785 if (textoFormatoHibrido.trim() !== '' ) {
5786 temTextoParaFormatoHibrido = true;
5787 textoFormatoHibrido += '<br>';
5788 }
5789 }
5790 }
5791
5792 const HOST = window.location.origin;
5793 const URLGeral = window.location.href;
5794
5795 //EMED
5796 const anoTurmaEmed = '2026';
5797
5798 const tipoCursoNome = function(){ return $('.ssp-header-curso__tag-formato').text().trim(); }
5799
5800 const isEmed = (tipoCursoNome().indexOf('Ensino Médio Técnico') > -1);
5801
5802 const statusEmed = Object.freeze({
5803 NAO_ENCONTRADA: 0,
5804 INSCRICAO: 1,
5805 ESPERA: 2,
5806 ESGOTADO: 3
5807 });
5808
5809 let unidadesToURL = []
5810
5811 const localLivreOnline = function(textoLocal){
5812 textoLocal = textoLocal || ''
5813 textoLocal = textoLocal.replaceAll('online', 'on-line')
5814
5815 const textoOnline = 'Nesta turma, todas as aulas serão on-line e ao vivo pela plataforma digital Microsoft Teams';
5816
5817 return textoLocal.toUpperCase().includes(textoOnline.toUpperCase());
5818 }
5819
5820 const linkBolsa = function(oferta){
5821
5822 let tiposCurso = new Map();
5823 tiposCurso.set('livre', 'L');
5824 tiposCurso.set('tecnico', 'T');
5825 tiposCurso.set('aprendizagem', 'A');
5826 let letraTipoCurso = tiposCurso.get($('[name="tipoCurso"]').val()) || '';
5827
5828 // verifica o campo destinoBolsa da oferta - 9546
5829 var destinoBolsa = ""
5830 if(oferta.destinoBolsa){
5831 destinoBolsa = parseInt(oferta.destinoBolsa,10)
5832 }
5833
5834 return hostBolsa+'/login/Login?origem=bolsas&destino=/jsp/default.jsp?template=2464.dwt&testeira=1540&idcourse='+
5835 $('[name="codigoFT"]').val()+
5836 '&cod_evento='+
5837 oferta.codigoOferta+
5838 '&cod_u='+
5839 codigoUnidade+
5840 '&nvg='+
5841 oferta.qtdeTotalVagasPSG+
5842 '&type='+
5843 letraTipoCurso+
5844 '&sel_unit=&ft=y'+
5845 (destinoBolsa ? '&destino='+destinoBolsa : '');
5846 }
5847
5848
5849 $('.ssp-ofertas-emed__filtro-content .btn').on('click', function(){
5850
5851 var classAtivo = 'btn--filtro-ativo';
5852
5853 if(!$(this).hasClass(classAtivo)){
5854
5855 $(this).siblings().removeClass(classAtivo);
5856
5857 $(this).addClass(classAtivo);
5858
5859 const $cardTransferencias = $('.card-transferencias-emed');
5860
5861 if($(this).val() == '0'){
5862 hideCardSemTurmas(true);
5863 $('.ssp-slick-ofertas-emed').empty();
5864 if(!$('.ssp-slick-ofertas-emed').hasClass('d-none')) $('.ssp-slick-ofertas-emed').addClass('d-none');
5865 $('.prev-mobile, .next-mobile').addClass('d-none');
5866 $cardTransferencias.removeClass('d-none');
5867 } else{
5868 if(!$cardTransferencias.hasClass('d-none')) $cardTransferencias.addClass('d-none');
5869 $('.ssp-slick-ofertas-emed').removeClass('d-none');
5870 populaOfertas(objsTela.ofertas);
5871 }
5872
5873 }
5874
5875 });
5876
5877 //Cronometro
5878 var hidden, visibilityChange;
5879 var restartTimeout = null;
5880 var interval01, interval15;
5881
5882 if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
5883 hidden = "hidden";
5884 visibilityChange = "visibilitychange";
5885 } else if (typeof document.msHidden !== "undefined") {
5886 hidden = "msHidden";
5887 visibilityChange = "msvisibilitychange";
5888 } else if (typeof document.webkitHidden !== "undefined") {
5889 hidden = "webkitHidden";
5890 visibilityChange = "webkitvisibilitychange";
5891 }
5892
5893 // Verifica suporte a Visibility API
5894 if (typeof document.addEventListener === "undefined" || hidden === undefined) {
5895 console.log("Navegador incompativel com page visibility api");
5896 } else {
5897 // Evento para quando a visibilidade da pagina mudar
5898 document.addEventListener(visibilityChange, handleVisibilityChange, false);
5899 }
5900
5901 $(".ssp-saiba-mais-curso-accordion").on("click", ".ssp-saiba-mais-curso-accordion__heading", function() {
5902
5903 $(this).toggleClass("active").next().slideToggle();
5904
5905 $(".sp-saiba-mais-curso-accordion__contents").not($(this).next()).slideUp(300);
5906
5907 $(this).siblings().removeClass("active");
5908 });
5909
5910 function loadUnidadesRegistroInteresse(urlCursoInfo) {
5911 if(objsTela.unidadesRegistroInteresse && objsTela.unidadesRegistroInteresse.length)
5912 return
5913
5914 let urlUnidades = new URL(window.location.origin + urlCursoInfo)
5915 let paramsUnidades = new URLSearchParams(urlUnidades.search)
5916 paramsUnidades.delete('inscricaoAberta')
5917 paramsUnidades.delete('bolsaAberta')
5918 paramsUnidades.delete('buscarUnidadesComOferta')
5919 urlUnidades.search = '?' + paramsUnidades.toString()
5920 urlUnidades = urlUnidades.href
5921
5922 $.ajax({
5923 url: urlUnidades,
5924 method:'get',
5925 async: false
5926 }).done(function(data){
5927 if(data.length > 0){
5928 const cursoInfo = JSON.parse(data);
5929 const unidadesOfertantes = cursoInfo.unidadesOfertantes;
5930
5931 $.each(unidadesOfertantes, function(k,item){
5932 var unidade = {};
5933 unidade['categoryId'] = item['categoryId'];
5934 unidade['codigoUnidade'] = item['codigoUnidade'];
5935 unidade['nome'] = item['nomeUnidade'];
5936 unidade['enderecoUnidade'] =item['enderecoUnidade'];
5937 unidade['numero'] =item['numEnderecoUnidade'];
5938 unidade['complemento'] = item['complementoEnderecoUnidade'];
5939 unidade['bairro'] = item['bairroUnidade'];
5940 unidade['googlemapsUnidade'] = item['googlemapsUnidade'];
5941 unidade['friendlyURL'] = item['friendlyURL'];
5942 unidade['selecionado'] = false;
5943 unidade['selectSelecionado'] = "";
5944 unidade['ofertas'] = [];
5945
5946 if(!objsTela.unidadesRegistroInteresse.filter(uni => uni['categoryId'] == unidade['categoryId']).length)
5947 objsTela.unidadesRegistroInteresse.push(unidade)
5948 });
5949 }
5950 });
5951 }
5952
5953 function loadUnidades(showOptions, unidadeValue){
5954 //Busca as unidades do curso
5955 let buscarUnidadesComOferta = false;
5956
5957 if( !isEmed && ( !$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')))
5958 buscarUnidadesComOferta = true;
5959
5960 const urlCursoInfo = urlSearchCursoInfo
5961 .replace('\{groupId\}', groupId)
5962 .replace('\{cursosInfo\}', $('[name="articleId"]').val())
5963 .replace('\{inscricaoAberta\}', $('#chkInscricao').prop('checked'))
5964 .replace('\{bolsaAberta\}', $('#chkBolsa').prop('checked'))
5965 .replace('\{buscarUnidadesComOferta\}', buscarUnidadesComOferta);
5966
5967 loadUnidadesRegistroInteresse(urlCursoInfo)
5968
5969 $.ajax({
5970 url:urlCursoInfo,
5971 method:'get',
5972 async: false,
5973 beforeSend: function () {
5974 loading('.oferta-slick-area');
5975 }
5976 }).done(
5977 function(data){
5978
5979 if(data.length > 0){
5980
5981 const cursoInfo = JSON.parse(data);
5982
5983 const unidades = buscarUnidadesComOferta ? cursoInfo.unidadesComOferta : cursoInfo.unidadesOfertantes;
5984
5985 if(!isAoVivo && (!buscarUnidadesComOferta || unidades.length > 0))
5986 $('.ssp-container-selecione-unidade').removeClass('d-none')
5987
5988 objsTela.unidades = []
5989 mapUnidadesIds = new Map();
5990
5991 $.each(unidades, function(k,item){
5992
5993 var unidade = cloneObj(item)
5994 unidade['nome'] = item['nomeUnidade'];
5995 unidade['numero'] =item['numEnderecoUnidade'];
5996 unidade['complemento'] = item['complementoEnderecoUnidade'];
5997 unidade['bairro'] = item['bairroUnidade'];
5998 unidade['ofertas'] = [];
5999
6000 objsTela.unidades.push(unidade);
6001
6002 mapUnidadesIds.set(unidade['categoryId'], unidade['codigoUnidade']);
6003
6004 objsTela.unidades.forEach(unidade => unidadesToURL.filter(u => u.friendlyURL == unidade.friendlyURL).length ? '' : unidadesToURL.push(unidade))
6005 });
6006
6007
6008 populaSelectUnidades(undefined, showOptions, unidadeValue);
6009
6010 }
6011 });
6012
6013 }
6014
6015function getOfertaObjectFromJson(ofertaJSON,index){
6016
6017
6018 var oferta = {};
6019 var xml = $($.parseXML(ofertaJSON.content));
6020 oferta['ordenar'] = paramOrdem(xml);
6021 oferta['vagasTotal'] = xml.find('[name="vagasTotal"]').text().trim();
6022 var dataInicio = xml.find('[name="dataInicioOferta"]').text().split('-');
6023 var dataFim =xml.find('[name="dataFimOferta"]').text().split('-');
6024 oferta['dataInicio'] = dataInicio[2].trim()+'/'+dataInicio[1].trim()+'/'+dataInicio[0].trim();
6025 oferta['dataFim'] = dataFim[2].trim()+'/'+dataFim[1].trim()+'/'+dataFim[0].trim();
6026 oferta['horaInicio'] = xml.find('[name="horaInicioOferta"]').text();
6027 oferta['codigoOferta'] = xml.find('[name="codigoOferta"]').text().trim();
6028 var dias = [];
6029 oferta['horaFimOferta'] = xml.find('[name="horaFimOferta"]').text().trim();
6030 xml.find('[name="diasDaSemanaOferta"]').find('option').each(function(index,dia){
6031 dias.push($(dia).text());
6032 });
6033 oferta['diasDaSemanaOferta'] = dias;
6034 oferta['periodoDiaOferta'] = xml.find('[name="periodoDiaOferta"]').text().trim();
6035 oferta['precoCheioOferta'] = xml.find('[name="precoCheioOferta"]').text().trim();
6036 oferta['precoVendaOferta'] = xml.find('[name="precoVendaOferta"]').text().trim();
6037 oferta['numeroMaxParcelasOferta'] = xml.find('[name="numeroMaxParcelasOferta"]').text().trim();
6038
6039 oferta['textoCartoesAceitos'] = pegarTextoCartoesAceitos(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
6040 oferta['numParcelaCartoes'] = pegaNumParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
6041 oferta['precoParcelaCartoes'] = pegaValorParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
6042 oferta['numParcelaBoleto'] = pegaNumParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
6043 oferta['precoParcelaBoleto'] = pegaValorParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
6044
6045 oferta['precoVendaMaxParcelaOferta'] = xml.find('[name="precoVendaMaxParcelaOferta"]').text().trim();
6046 oferta['formaDePagamentoOferta'] = xml.find('[name="formaDePagamentoOferta"]').text().trim();
6047 oferta['botaoCompraOferta'] = xml.find('[name="botaoCompraOferta"]').text().trim();
6048 oferta['vagasParaCompraOferta'] = xml.find('[name="vagasParaCompraOferta"]').text().trim();
6049 oferta['botaoBolsaOferta'] = xml.find('[name="botaoBolsaOferta"]').text().trim();
6050 oferta['vagasBolsaOferta'] = xml.find('[name="vagasBolsaOferta"]').text().trim();
6051 oferta['dataAberturaBolsaOferta'] = xml.find('[name="dataAberturaBolsaOferta"]').text().trim();
6052 oferta['horaAberturaBolsaOferta'] = xml.find('[name="horaAberturaBolsaOferta"]').text().trim();
6053 oferta['espacoExterno'] = xml.find('[name="espacoExterno"]').text().trim();
6054 oferta['localEspacoExterno'] = xml.find('[name="localEspacoExterno"]').text().trim();
6055 oferta['ruaEspacoExterno'] = xml.find('[name="ruaEspacoExterno"]').text().trim();
6056 oferta['numeroEspacoExterno'] = xml.find('[name="numeroEspacoExterno"]').text().trim();
6057 oferta['complementoEspacoExterno'] = xml.find('[name="complementoEspacoExterno"]').text().trim();
6058 oferta['bairroEspacoExterno'] = xml.find('[name="bairroEspacoExterno"]').text().trim();
6059 oferta['cidadeEspacoExterno'] = xml.find('[name="cidadeEspacoExterno"]').text().trim();
6060 oferta['ufEspacoExterno'] = xml.find('[name="ufEspacoExterno"]').text().trim();
6061 oferta['cepEspacoExterno'] = xml.find('[name="cepEspacoExterno"]').text().trim();
6062 oferta['qtdeTotalVagas'] = xml.find('[name="qtdeTotalVagas"]').text().trim();
6063 oferta['qtdeTotalVagasPSG'] = xml.find('[name="qtdeTotalVagasPSG"]').text().trim();
6064 oferta['horariosAllOferta'] = xml.find('[name="horariosAllOferta"]').text().trim();
6065 oferta['formaDePagamentoCartaoOferta'] = xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim();
6066 oferta['formaDePagamentoBoletoOferta'] = xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim();
6067 oferta['dtLimiteMatricula'] = xml.find('[name="dtLimiteMatricula"]').text().trim();
6068 oferta['dataAberturaMatricula'] = xml.find('[name="dataAberturaMatricula"]').text().trim();
6069 oferta['etapa'] = xml.find('[name="etapa"]').text().trim();
6070 oferta['destinoCompra'] = xml.find('[name="destinoCompra"]').text().trim();
6071 //adicao do destinoBolsa na oferta - 9546 - 11/07/2022
6072 oferta['destinoBolsa'] = xml.find('[name="destinoBolsa"]').text().trim();
6073
6074 // 18/07/2025 - Removido o dataAberturaBolsaOferta recebendo o dataAberturaMatricula
6075 // devido a mudança de regra que recebemos da área
6076
6077 return oferta;
6078 }
6079
6080 const getStatusEmed = (oferta) => {
6081
6082 const urlStatusEsperaEmed = () => {
6083 let url = (isAmbienteTeste()) ?
6084 'https://hinscricao-educacional-backend.sp.senac.br/api/lista-espera/'
6085 : 'https://inscricao-educacional-ms.sp.senac.br/api/lista-espera/';
6086
6087 return url + oferta.codigoOferta;
6088 }
6089
6090 const callTl = async () => {
6091 if(getCookie('tl') == null){
6092 return await $.ajax({
6093 url: '/o/senac-content-services/geraTokenServicosSenac',
6094 method: 'GET'
6095 });
6096 }
6097 return getCookie('tl');
6098 }
6099
6100 const callListaEspera = async () => {
6101 var tl = '';
6102 try{
6103 tl = await callTl();
6104 if(getCookie('tl') == null){
6105 tl = JSON.parse(tl).token;
6106 writeCookie('tl', tl, 6, '');
6107 }
6108 }catch(err){
6109 console.error(err);
6110 return {};
6111 }
6112
6113 return $.ajax({
6114 url: urlStatusEsperaEmed(),
6115 method: 'GET',
6116 beforeSend: function (xhr) {
6117 xhr.setRequestHeader("Authorization", tl);
6118 }
6119 })
6120 }
6121
6122 return new Promise(async function (resolve, reject) {
6123 const resp = await callListaEspera();
6124 if(typeof resp !== 'object') resp = JSON.parse(resp);
6125 let status = resp.STATUS;
6126 resolve(status);
6127 });
6128
6129 }
6130
6131 function getOfertasAoVivo(codigoFT, dataEfetivaOferta, categoryIds){
6132
6133 if(categoryIds && categoryIds.length) {
6134 var params = new URLSearchParams();
6135 params.set('codigoFTOferta',codigoFT)
6136 params.set('dataEfetivaOferta',dataEfetivaOferta)
6137 params.set('categoryIds',categoryIds)
6138 params.set('start',startOfertaParam)
6139 params.set('end',endOfertaParam)
6140 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
6141 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
6142 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
6143
6144 if($('#chkBolsa').prop('checked')){
6145 params.set('considerarDataBolsaFutura', true)
6146 }
6147 const url = urlSearchOferta + '?' + params.toString()
6148
6149 $.ajax({
6150 url:url,
6151 method:'get',
6152 dataType:'json',
6153 async: false
6154 }).done(
6155 function(data){
6156
6157 if(data.length > 0){
6158 $('#ssp-alternadores').show()
6159 showedFilters = true
6160
6161 objsTela.ofertasAoVivoTodasUnidades = []
6162
6163 data.forEach(function(ofertaJSON,index){
6164
6165 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
6166
6167 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
6168 ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
6169 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
6170
6171 });
6172 } else {
6173 loadAlternadores(data)
6174 }
6175
6176 populaOfertas(objsTela.ofertasAoVivoTodasUnidades);
6177 addEventBolsa()
6178 }
6179 ).fail(function(e) {
6180 console.error(e)
6181 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []);
6182 })
6183 } else {
6184 loadAlternadores([])
6185 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = [])
6186 }
6187
6188 if(isAoVivo) {
6189 if(objsTela.ofertasAoVivoTodasUnidades && objsTela.ofertasAoVivoTodasUnidades.length)
6190 hideCardSemTurmas(true)
6191 else
6192 hideCardSemTurmas(false)
6193 }
6194 }
6195
6196 function mudouToggleOferta(ofertas) {
6197 const oferta = ofertas && ofertas[0]
6198 if(!oferta)
6199 return true
6200
6201 const selecaoInscricao = $('#chkInscricao').prop('checked')
6202 const selecaoBolsa = $('#chkBolsa').prop('checked')
6203
6204 return oferta.selecaoInscricao != selecaoInscricao || oferta.selecaoBolsa != selecaoBolsa
6205 }
6206
6207 function loadAlternadores(ofertas) {
6208 if(showedFilters) {
6209 $('#ssp-alternadores').show()
6210 return
6211 }
6212
6213 if($('#unidades-ofertas').is(":hidden") || $('#unidades-ofertas option').length <= 1) {
6214 if(isAoVivo) {
6215 if(ofertas && ofertas.length)
6216 $('#ssp-alternadores').show()
6217 else {
6218 if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
6219 $('#ssp-alternadores').hide()
6220 else
6221 $('#ssp-alternadores').show()
6222 }
6223 } else {
6224 if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
6225 $('#ssp-alternadores').hide()
6226 else
6227 $('#ssp-alternadores').show()
6228 }
6229 } else
6230 $('#ssp-alternadores').show()
6231
6232 showedFilters = showedFilters || $('#ssp-alternadores').is(":visible")
6233 }
6234
6235 function getOfertas(codigoFT, dataEfetivaOferta, categoryId){
6236
6237 var indiceUnidade = -1;
6238 const selecaoInscricao = $('#chkInscricao').prop('checked')
6239 const selecaoBolsa = $('#chkBolsa').prop('checked')
6240
6241 for(var i = 0; i < objsTela.unidades.length; i++)
6242 if(objsTela.unidades[i].categoryId == categoryId)
6243 indiceUnidade = i;
6244
6245 ultimaUnidade = indiceUnidade;
6246
6247 if( !objsTela.categoriesIds.includes(categoryId) || mudouToggleOferta(objsTela.unidades[indiceUnidade]['ofertas'])){
6248 objsTela.unidades[indiceUnidade]['ofertas'] = []
6249
6250 var params = new URLSearchParams();
6251 params.set('codigoFTOferta',codigoFT)
6252 params.set('dataEfetivaOferta',dataEfetivaOferta)
6253 params.set('categoryIds',categoryId)
6254 params.set('start',startOfertaParam)
6255 params.set('end',endOfertaParam)
6256 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
6257 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
6258 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
6259
6260 if($('#chkBolsa').prop('checked')){
6261 params.set('considerarDataBolsaFutura', true)
6262 }
6263
6264 const url = urlSearchOferta + '?' + params.toString()
6265
6266 $.ajax({
6267 url:url,
6268 method:'get',
6269 dataType:'json',
6270 async: false
6271 }).done(
6272 function(data){
6273
6274 if(data.length > 0){
6275 $('#ssp-alternadores').show()
6276 showedFilters = true
6277
6278 $('.ssp-container-selecione-unidade').show();
6279
6280 data.forEach(function(ofertaJSON,index){
6281
6282 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
6283
6284 //Preenche as ofertas da unidade
6285 objsTela.unidades[indiceUnidade]['ofertas'].push(oferta);
6286 objsTela.unidades[indiceUnidade]['ofertas'].forEach(o => {
6287 o.selecaoInscricao = selecaoInscricao
6288 o.selecaoBolsa = selecaoBolsa
6289 })
6290
6291 });
6292 } else {
6293 loadAlternadores()
6294 }
6295 objsTela.categoriesIds.push(categoryId);
6296 populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
6297 addEventBolsa()
6298 }
6299 )
6300
6301 //Se estiver na cache, valida as ofertas
6302 }else{
6303
6304 populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
6305
6306 }
6307 }
6308
6309 function populaSelectUnidades(unidades, showOptions, unidadeValue){
6310 var unidadePreSelecionada = false;
6311 var categoryIdUnidadePreSelecionada = '';
6312
6313 //Oredenacao
6314 objsTela.unidades.sort(function (a, b) {
6315 return ordenar(a, b, 'nome');
6316 });
6317
6318 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
6319 return ordenar(a, b, 'nome');
6320 });
6321
6322 //console.log(objsTela.unidades);
6323
6324 $.each(objsTela.unidades, function(k,item){
6325
6326 if(getURLData().includes('/'+item.friendlyURL+'/')){
6327 unidadePreSelecionada= true;
6328 categoryIdUnidadePreSelecionada = item['categoryId'];
6329 }
6330 });
6331
6332 //console.log('Unidade Pre '+unidadePreSelecionada);
6333
6334 if(objsTela.unidades.length == 0){
6335 if(!showOptions)
6336 $('.ssp-container-selecione-unidade').addClass('d-none');
6337 $('.oferta-slick-area').empty();
6338 $('.prev-mobile').addClass('d-none');
6339 $('.next-mobile').addClass('d-none');
6340 //EMED remove msg registro interesse
6341 //if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none');
6342 }
6343
6344 if(isAoVivo){
6345
6346 const codigoFT = $('[name="codigoFT"]').val();
6347 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
6348
6349 var unidadesCategoryAll = '';
6350
6351 $.each(objsTela.unidades, function(k,unidade){
6352 unidadesCategoryAll += unidade['categoryId']+',';
6353 });
6354
6355 //tirando ultima virgula
6356 unidadesCategoryAll = unidadesCategoryAll.substring(0,unidadesCategoryAll.length - 1);
6357
6358 getOfertasAoVivo(codigoFT, dataEfetivaOferta, unidadesCategoryAll);
6359
6360 }else{
6361 $('#unidades-ofertas').empty()
6362
6363 if(objsTela.unidades && objsTela.unidades.length){
6364 if(isEmed)
6365 $('#unidades-ofertas').append($('<option value="">Selecione uma unidade</option>'))
6366 else
6367 $('#unidades-ofertas').append($('<option value="">Clique na unidade de interesse</option>'))
6368
6369 } else
6370 $('#unidades-ofertas').append($('<option value="">Nenhum resultado encontrado</option>'))
6371
6372 let unidadeFounded = criarOptionUnidadesPorRegiao(objsTela.unidades)
6373
6374 //Dispara o evento para primeira unidade ou pela friendlyURl da unidade
6375 if(unidadeValue) {
6376 $('#unidades-ofertas').val(unidadeValue);
6377 $('#unidades-ofertas').change();
6378 } else if(unidadeFounded){
6379 $('#unidades-ofertas').val(unidadeFounded['categoryId']+"@"+unidadeFounded['codigoUnidade']);
6380 $('#unidades-ofertas').change();
6381 } else if(!unidadePreSelecionada) {
6382 $('#unidades-ofertas').change();
6383 }
6384
6385 $('.ssp-card-registro-interesse__select.unidades').empty()
6386 $('.ssp-card-registro-interesse__select.unidades').append('<option value="" disabled selected>Selecione uma unidade</option>')
6387 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
6388
6389 $('.ssp-card-registro-interesse__select.unidades').append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
6390 });
6391 }
6392
6393 }
6394
6395 function excecaoCursoGratuito(oferta){
6396 return $('[name="modalidadeName"]').val() == 'acoes-educ.-curta-duracao' && $('[name="tipoCurso"]').val() == 'livre' && (strToFloat(oferta.precoVendaOferta) == 0);
6397 }
6398
6399
6400 function mudarUnidade(ev){
6401 startOfertaParam = 0;
6402 endOfertaParam = 25;
6403 carregouUltimaOferta = false;
6404
6405 var elem = $(ev.target);
6406 var unidades = objsTela.unidades;
6407
6408 //verifica se selecionou alguma unidade
6409 if(!elem.val()){
6410 $('#informe-novas-turmas, .ssp-ofertas-emed__section, .ssp-ofertas__box-endereco-unidade').addClass('d-none');
6411
6412 if(isEmed)
6413 $('#ssp-section-response').addClass('d-none')
6414
6415 hideCardSemTurmas($('#unidades-ofertas option').length > 1)
6416
6417 elem.val('')
6418 habilitarRegistroInteresse(false)
6419 //Zera variável que controla existência de ofertas com bolsa
6420 ofertasComBolsa = false;
6421 controlaPaginaBolsa();
6422
6423 return;
6424 }
6425
6426 $('#informe-novas-turmas, .ssp-ofertas__box-endereco-unidade').removeClass('d-none');
6427 hideCardSemTurmas(true)
6428 if(isEmed){
6429 $('.ssp-ofertas-emed__section').removeClass('d-none');
6430 $('#ssp-section-response').removeClass('d-none')
6431 $('.ssp-card-oferta-curso__section-title').addClass('d-none');
6432 $('.prev-mobile, .next-mobile').addClass('d-none');
6433 var nomeUnidade = $('#unidades-ofertas option:selected').text();
6434 let tamScreen = $(window).width();
6435
6436 if(tamScreen < 1024)
6437 $('#titulo-emed').text('Turmas ' + anoTurmaEmed );
6438 else
6439 $('#titulo-emed').text('Turmas ' + anoTurmaEmed + ' - ' + nomeUnidade);
6440
6441 }
6442
6443 const codigoFT = $('[name="codigoFT"]').val();
6444 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
6445
6446 //colocamos dentro do option categoryId@codUnidade
6447 splitted = elem.val().split("@");
6448 var categoryIdUnidade = splitted[0];
6449 var codUnidade = splitted[1];
6450
6451 for(var i = 0; unidades.length > i ; i++){
6452
6453 if(unidades[i].categoryId == categoryIdUnidade){
6454
6455 var unidade = unidades[i];
6456
6457 //Exibe o endereco da unidade
6458 const urlBuscaUnidade = urlUnidadeInfoDetalhe
6459 .replace('\{companyId\}',themeDisplay.getCompanyId())
6460 .replace('\{codigoUnidade\}', unidade.codigoUnidade);
6461
6462 $.ajax({
6463 url : urlBuscaUnidade,
6464 type : 'get',
6465 dataType: 'json',
6466 success: function( unidadeInfo ) {
6467 if(unidadeInfo != null && typeof unidadeInfo !== 'undefined'){
6468
6469 var endereco = concatSTR(unidadeInfo.enderecoUnidade,unidadeInfo.numEnderecoUnidade,', ');
6470 endereco = concatSTR(endereco,unidadeInfo.complementoEnderecoUnidade, ' - ');
6471 endereco = concatSTR(endereco,unidadeInfo.bairroUnidade, ' - ');
6472
6473 $('.ssp-ofertas__endereco-unidade').text(endereco);
6474 $('.ssp-ofertas__endereco-unidade').attr('href',unidadeInfo.googlemapsUnidade);
6475 }
6476 },
6477 error: function(data){
6478 $('.ssp-ofertas__endereco-unidade').text('');
6479 $('.ssp-ofertas__endereco-unidade').attr('href','#a');
6480 console.log('Unidade não encontrada');
6481 }
6482 })
6483
6484 getOfertas(codigoFT, dataEfetivaOferta, unidades[i].categoryId);
6485
6486 habilitarRegistroInteresse(!!(unidades && unidades.length));
6487
6488 }
6489 }
6490 }
6491
6492 function pegarTextoCartoesAceitos(campo){
6493 indice = campo.indexOf(' em até ');
6494 inicio = 0;
6495 fim = indice;
6496
6497 return campo.substring(inicio, fim);
6498 }
6499
6500 function pegaNumParcela(campo){
6501
6502 indice = campo.indexOf('até ');
6503 inicio = indice + 4;
6504 fim = indice + 6;
6505
6506 return campo.substring(inicio, fim);
6507
6508 }
6509
6510 function pegaValorParcela(campo){
6511
6512 indice = campo.indexOf('R$');
6513 inicio = indice+2;
6514 valorAmericano = campo.substring(inicio)
6515
6516 return formataValor(valorAmericano);
6517
6518 }
6519
6520 function montaHTMLOferta(oferta, index, codigoUnidade, posLoad){
6521
6522 var retornoDiasHorarios = processaDiasHorariosOferta(oferta.horariosAllOferta);
6523 diasSemanaHTML = "";
6524
6525 for(var diaDaOferta of retornoDiasHorarios){
6526 diasSemanaHTML += htmlSlickAreaDiasSemana.replace('\{diasSemana\}',diaDaOferta.dias);
6527 diasSemanaHTML = diasSemanaHTML.replace('\{horasSemana\}',diaDaOferta.horario)
6528 }
6529
6530 var ofertaHTML = "";
6531
6532 if(isEmed){
6533
6534 ofertaHTML = htmlSlickAreaEmed(oferta);
6535 $('[name="codUnidadeSelecionada"]').val(codigoUnidade);
6536
6537 if(!posLoad) $('.ssp-slick-ofertas-emed').append(ofertaHTML)
6538 else $('.ssp-slick-ofertas-emed').slick('slickAdd', ofertaHTML);
6539 }else{
6540
6541
6542 ofertaHTML = htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade)
6543
6544 if(!posLoad)
6545 $('.oferta-slick-area').append(ofertaHTML);
6546 else
6547 $('.oferta-slick-area').slick('slickAdd', ofertaHTML);
6548
6549 ajustaTextoDiasHorarioOferta(oferta.codigoOferta);
6550
6551 }
6552
6553 if(turmasIniciadas(oferta.dataInicio))
6554 $("#aviso-turma-iniciada-"+index).show();
6555
6556 //remove os botões/itens de compra/bolsa caso seja preciso
6557 $('.oferta-slick-area').find('.d-none-btn').remove();
6558 }
6559
6560
6561 //RECEBE A STRING DE HORARIOS E RETORNA UMA LISTA DE OBJETOS COM OS DIAS E HORARIOS FORMATADOS
6562 //@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"
6563 function processaDiasHorariosOferta(horariosAllOferta){
6564
6565 var dias = horariosAllOferta.trim().split(',');
6566 let arrayDiasSemana = [{"Seg":"Segunda"},{"Ter":"Terça"},{"Qua":"Quarta"},{"Qui":"Quinta"},{"Sex":"Sexta"},{"Sab":"Sábado"},{"Dom":"Domingo"}]
6567
6568 var arrayDia = [];
6569 if(dias.length >= 1){
6570 for(var k=0; dias.length > k; k++){
6571 var diasSplit = dias[k].trim().split(' ');
6572 var diasSemana = diasSplit.shift()
6573 var ultimaPos = diasSplit.length-1;
6574 var horasStr = diasSplit[0] + ' às ' + diasSplit[ultimaPos]
6575 arrayDia.push({horasStr,diasSemana});
6576 }
6577 }
6578
6579 arrayDia = groupByArray(arrayDia, 'horasStr','diasSemana');
6580 arrayDia = orderByArray(arrayDia,arrayDiasSemana);
6581
6582 var ret = diaHorarioOfertaFormatado(arrayDia,arrayDiasSemana);
6583 return ret;
6584 }
6585
6586 //cria um array de objetos Agrupando de acordo ao campo informado como chave.
6587 //@arr = Array multidimensional que tenha os campos key e valueAdd
6588 //@key = campo que será chave nesse array
6589 //@valueAdd = campo que será agrupado caso tenha a mesma informação passada no campo key
6590 const groupByArray = (arr, key,valueAdd) => {
6591 const initialValue = [];
6592 const retornoValue = [];
6593 arr.forEach((acc, cval) => {
6594 const myAttribute = cval[key];
6595 acc[key] in retornoValue ? retornoValue[acc[key]].push(acc[valueAdd]):retornoValue[acc[key]]=[acc[valueAdd]];
6596 return acc;
6597 }, initialValue);
6598 return retornoValue;
6599 };
6600
6601
6602 //Cria um array de objetos a partir do primeiro array inserido e ordenados de acordo a ordem do segundo array informado.
6603 //@arrayOrdena = Array de objetos que tenha os campos que precisa ser ordenados
6604 //@ordem = array com a sequencia que queira ordenar - ex: seg, ter, qua, qua
6605 const orderByArray = (arrayOrdena, ordem) => {
6606
6607 let diasSem = [];
6608 const arrayOrdenado = [];
6609 let controle;
6610
6611 //percorre cada campo existente no ordem e busca o mesmo no arrayOrdena, encontrando insere no arrayOrdenado
6612 for(let campo of ordem){
6613 Object.entries(arrayOrdena).forEach(([key, value]) => {
6614 for(let diaOferta of value){
6615 if(diaOferta===Object.keys(campo)[0]){
6616 arrayOrdenado[key]=arrayOrdena[key];
6617 }
6618 }
6619 })
6620 }
6621 return arrayOrdenado;
6622 };
6623
6624 //retorna o valor de um objeto dentro de um array
6625 //@objetoBusca = array de objetos que sera buscado o valor
6626 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6627 function findValueInObject(objetoBusca, keyBusca){
6628 var retorno = "";
6629 Object.entries(objetoBusca).forEach(([horario, dias]) => {
6630 Object.entries(dias).forEach(([key,val]) => {
6631 if(key.trim()==keyBusca.trim()){
6632 retorno = val;
6633 }
6634 });
6635 });
6636 return retorno;
6637 }
6638
6639 //Recebe um objeto com valores dos dias da semana e define se sao dias seguidos ou alternados.
6640 //@arrayComDiasDaSemana = array com os dias da semana a serem validados - exemplo ['Qua','Qui','Sex']
6641 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6642 function diasSequenciaisOuAlternados(arrayComDiasDaSemana, arrayDiasDaSemana){
6643
6644 let arrayValidador = [];
6645
6646 //cria um array com o index dos dias das semanas encontrados [0 = seg, 1 = ter ... 6 = dom]
6647 for(let diaOferta of arrayComDiasDaSemana){
6648 for(let i = 0; i < arrayDiasDaSemana.length; i++){
6649 if(diaOferta === Object.keys(arrayDiasDaSemana[i])[0]){
6650 arrayValidador[i] = true;
6651 }
6652 }
6653 }
6654
6655 let keyCompair = 99;
6656 var sequencial = true;
6657
6658 //verifica quais posições foram criadas no array, e se os valores delas estão em sequencia.
6659 for(let keyValidator of Object.keys(arrayValidador)){
6660 keyValidator = parseInt(keyValidator);
6661 if(keyCompair!==99){
6662 if(keyValidator===keyCompair){
6663 sequencial = true;
6664 }else{
6665 sequencial = false;
6666 break;
6667 }
6668 }
6669 keyCompair = keyValidator+1;
6670 }
6671 return sequencial;
6672 }
6673
6674
6675 //Exibe as informações de dia e horario de oferta de acordo a sua estrutura
6676 //Caso os dias sejam sequenciais exibe a primeiro e ultimo dia da semana ligados com a letra 'a' Ex: Segunda a Quinta
6677 //Caso os dias Nao sejam sequenciais exibem todos os dias separados por virgula Ex: Segunda, terça, sexta e domingo
6678 //@arrayAgrupadoEOrdenado = array de objetos que sera exibido
6679 //@arrayDiasDaSemana = array com os dias da semana, sendo chave a sigla da semana (ex: Qua) e o valor o nome esperado (ex: Quarta)
6680 function diaHorarioOfertaFormatado(arrayAgrupadoEOrdenado, arrayDiasDaSemana){
6681
6682 var stringAux = "";
6683 var listRetorno = [];
6684
6685 Object.entries(arrayAgrupadoEOrdenado).forEach(([key, value]) => {
6686
6687 var sequencial = diasSequenciaisOuAlternados(value, arrayDiasDaSemana);
6688 var stringAux = "";
6689 var diaOferta = {};
6690
6691 if(sequencial){
6692 switch (value.length) {
6693 case 1:
6694 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+": ";
6695 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6696 diaOferta.horario = key;
6697 break;
6698 case 2:
6699 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
6700 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6701 diaOferta.horario = key;
6702 break;
6703 default:
6704 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" a "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
6705
6706 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6707 diaOferta.horario = key;
6708 break;
6709 }
6710 }else{
6711 switch (value.length) {
6712 case 2:
6713 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
6714 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6715 diaOferta.horario = key;
6716 break;
6717 default:
6718 var ct = 0;
6719 var stringDias="";
6720 for(let v of value){
6721 ct++;
6722 ct==value.length ? stringDias=stringDias.substring(0,stringDias.length - 2)+" e "+findValueInObject(arrayDiasDaSemana,v) : stringDias+=findValueInObject(arrayDiasDaSemana,v)+", ";
6723 }
6724 stringAux = stringAux+stringDias+": ";
6725 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6726 diaOferta.horario = key;
6727 break;
6728 }
6729 }
6730
6731 listRetorno.push(diaOferta);
6732 })
6733 return listRetorno;
6734 };
6735
6736
6737 //Distribui dia e horario com quebra de linha entre eles ou nao dependendo da resolução de tela e tamanho da string
6738 function ajustaTextoDiasHorarioOferta(codOferta){
6739
6740 var classOferta = ".codigoOferta_"+codOferta;
6741 let oferta = $(classOferta);
6742
6743 let ofertaDiasSemana = $(oferta).find('*[data-dia-hora="dias-semana"]');
6744
6745 let widthDevice = window.screen.width;
6746 let tamLimDesktop = 185;
6747
6748 if(widthDevice <= 1024){
6749 tamLimDesktop = 180;
6750 }
6751
6752 ofertaDiasSemana.each(function(index){
6753
6754
6755 let widthDiaSemana = $(this).width();
6756
6757 let contentDiaHora = $(this).parent().parent().parent();
6758
6759 if(!(widthDiaSemana <= tamLimDesktop)){
6760 $(this).css("display","block");
6761 }
6762
6763 if(ofertaDiasSemana.length == parseInt(index+1)){
6764 contentDiaHora.css("opacity","1");
6765 }
6766
6767 })
6768 }
6769
6770 function getObjBtnComprar(oferta){
6771 let obj = {};
6772 obj['dataEspacoEx'] = (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? 'true' : 'false';
6773 if($('#manutencao-compra').val()){
6774 obj['classeBotao'] = 'disabled manutencao';
6775 obj['textoBotao'] = $('#manutencao-compra').val();
6776 }
6777 else{
6778 obj['classeBotao'] = oferta.botaoCompraOferta == 'true' ? (oferta.vagasParaCompraOferta == 'true' ? '' : 'disabled') : 'd-none-btn';
6779 obj['textoBotao'] = oferta.vagasParaCompraOferta == 'true' ? 'COMPRAR' : 'Vagas esgotadas para compra';
6780 }
6781 return obj;
6782 }
6783
6784 function getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade){
6785
6786 var formaPagtoObj = {};
6787
6788 var regNumMaxParce = new RegExp('\{numeroMaxParcelasOferta\}', 'g');
6789 var regPrecMaxParce = new RegExp('\{precoVendaMaxParcelaOferta\}', 'g')
6790
6791 formaPagtoObj['regIndex'] = index;
6792 formaPagtoObj['precoCheioOferta'] = formataValor(oferta.precoCheioOferta);
6793 formaPagtoObj['textoCartoesAceitos'] = oferta.textoCartoesAceitos;
6794
6795 formaPagtoObj['numParcelaCartoes'] = oferta.numParcelaCartoes;
6796 formaPagtoObj['precoParcelaCartoes'] = oferta.precoParcelaCartoes;
6797 formaPagtoObj['numParcelaBoleto'] = oferta.numParcelaBoleto;
6798 formaPagtoObj['precoParcelaBoleto'] = oferta.precoParcelaBoleto;
6799 formaPagtoObj['precoVendaOferta'] = formataValor(oferta.precoVendaOferta);
6800
6801 formaPagtoObj['economia'] = formataValor(parseFloat(oferta.precoCheioOferta).toFixed(2) - parseFloat(oferta.precoVendaOferta).toFixed(2));
6802 formaPagtoObj['espacoExterno'] = oferta.espacoExterno == 'true' ? 'true' : 'false';
6803 formaPagtoObj['dataUnidade'] = codigoUnidade;
6804 formaPagtoObj['dataEvento'] = oferta.codigoOferta;
6805 formaPagtoObj['destinoCompra '] = oferta.destinoCompra;
6806
6807 //EMED nao restringe o botao
6808 if(isEmed){
6809 let manutencao = $('#manutencao-compra').val();
6810 formaPagtoObj['textoBotaoComprar'] = manutencao || 'COMPRAR';
6811 formaPagtoObj['classeBotaoComprar'] = manutencao ? 'disabled manutencao' : '';
6812 }else{
6813 let btnComprar = getObjBtnComprar(oferta);
6814 formaPagtoObj['textoBotaoComprar'] = btnComprar.textoBotao;
6815 formaPagtoObj['classeBotaoComprar'] = btnComprar.classeBotao;
6816 }
6817
6818 formaPagtoObj['regNumMaxParce'] = oferta.numeroMaxParcelasOferta;
6819 formaPagtoObj['regPrecMaxParce'] = formataValor(oferta.precoVendaMaxParcelaOferta);
6820
6821 //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
6822 formaPagtoObj['precoAVistaPadraoExt'] = formataValor(oferta.precoVendaOferta);
6823 var precoContribuinteExtensao = (parseFloat(oferta.precoVendaOferta).toFixed(2) * 0.80).toFixed(2);
6824 formaPagtoObj['precoContrExt'] = formataValor(precoContribuinteExtensao);
6825 formaPagtoObj['economiaExt'] = formataValor(parseFloat(oferta.precoVendaOferta).toFixed(2) - precoContribuinteExtensao);
6826 formaPagtoObj['precoParcelaBoletoExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaBoleto).toFixed(2));
6827 formaPagtoObj['precoParcelaCartoesExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaCartoes).toFixed(2));
6828 formaPagtoObj['precoAVistaContrExt'] = formataValor( (precoContribuinteExtensao * 0.92).toFixed(2));
6829
6830 return formaPagtoObj;
6831 }
6832
6833 function calculaPrecoAvista(precoVendaOferta){
6834 return (parseFloat(precoVendaOferta).toFixed(2) * 0.92).toFixed(2);
6835 }
6836
6837 function getParcelasEntradaCartao(dataInicioCurso){
6838
6839 const dCurso = new Date(dataInicioCurso.split("/").reverse().join("-"));
6840 const dHoje = new Date();
6841
6842 let diffAnos = dCurso.getUTCFullYear() - dHoje.getUTCFullYear();
6843 let diffMeses = dCurso.getUTCMonth() - dHoje.getUTCMonth();
6844 diffMeses = diffAnos * 12 + diffMeses;
6845
6846 return (diffMeses > 4) ? 4 : ((diffMeses<=0) ? 1 : diffMeses);
6847
6848 }
6849
6850 function createModalFormaPagto(formaPagtoObj, oferta, index) {
6851 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
6852 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
6853
6854 result = `
6855 <div id="modalFormaPagto" class="ssp-modal">
6856 <div class="ssp-card-modal-forma-pagamento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
6857 <div class="ssp-card-modal-forma-pagamento__header" style="border: 0; margin-bottom: 0 !important;">
6858 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold" style="color:#454F63">Descontos e ` + (temDesconto ? 'pagamento' : 'parcelamento') + `</h6>
6859 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_` + index + `"></i>
6860 </div>
6861 `
6862 + (temDesconto ? '' : '<div class="ssp-card-oferta-curso__line-divider mt-0 mb-5 mb-md-8"></div>') +
6863 `
6864 <div class="ssp-card-modal-forma-pagamento__body">
6865 `
6866 if(temDesconto) {
6867 result = result + `
6868 <div>
6869 <p class="my-0"><strong>Valor com </strong>
6870 <span class="ssp-card-oferta-curso__valor-desconto mt-0 mb-0">50% de desconto*</span>
6871 </p>
6872 </div>
6873 <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>`
6874
6875 if($('[name="tipoCurso"]').val() == 'extensao') {
6876 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>`
6877 } else {
6878 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>`
6879 }
6880
6881
6882 result = result + `
6883 <div class="ssp-card-oferta-curso__line-divider mb-5 mb-md-2 mt-2"></div>
6884 <p class="my-0"><strong>Valor:</strong></p>
6885 <h6 class="ssp-card-oferta-curso__item-valor-investimento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
6886 <p class="mt-0 mb-0"><strong>Valor Total: </strong> ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</p>
6887 <div class="ssp-card-oferta-curso__line-divider mt-4 mb-md-3 mb-4"></div>
6888 <p class="my-0"><strong>Parcele e garanta mais tempo para pagar:</strong></p>
6889 `
6890 } else {
6891 if(formaPagtoObj.precoCheioOferta == formaPagtoObj.precoVendaOferta) {
6892 result = result + `
6893 <p class="ssp-card-modal-forma-pagamento__valor-desconto mt-n3">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6894 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6895 <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>
6896 </div>
6897 `
6898 } else {
6899 const textoDesc = temDesconto ? 'Valor com 30% de desconto:' : 'Valor com desconto:'
6900
6901 result = result + `
6902 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px;">` + textoDesc + `</small>
6903 <p class="ssp-card-modal-forma-pagamento__valor-cheio">R$ <span class="precoCheioOferta">` + formaPagtoObj.precoCheioOferta + `</span></p>
6904 <p class="ssp-card-modal-forma-pagamento__valor-desconto">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6905 <p class="ssp-card-modal-forma-pagamento__total-economia">Você economiza <span>R$ <span class="economia">` + formaPagtoObj.economia + `</span></span></p>
6906 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6907 <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>
6908 </div>
6909 `
6910 }
6911 }
6912
6913 let textoParcelaCartoes, textoParcelaBoleto, textoParcelaCartaoComBoleto
6914 if(temDesconto) {
6915 const precoParcelaCartoes = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaCartoes)/2, 2))
6916 const precoParcelaBoleto = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaBoleto)/2, 2))
6917
6918 if(formaPagtoObj.numParcelaCartoes)
6919 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x</span> sem juros</p>`
6920
6921 if(formaPagtoObj.numParcelaBoleto)
6922 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x</span> sem juros</p>`
6923
6924 } else {
6925 if(formaPagtoObj.numParcelaCartoes)
6926 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x de R$ <span class="precoParcelaCartoes">` + formaPagtoObj.precoParcelaCartoes + `</span></span> sem juros</p>`
6927
6928 if(formaPagtoObj.numParcelaBoleto)
6929 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x de R$ <span class="precoParcelaBoleto">` + formaPagtoObj.precoParcelaBoleto + `</span></span> sem juros</p>`
6930
6931 }
6932
6933 if(formaPagtoObj.numParcelaBoleto){
6934 textoParcelaCartaoComBoleto = `<p>1ª parcela em até <span><span class="numParcelaCartoes">` + getParcelasEntradaCartao(oferta.dataInicio) + `</span>x</span> sem juros no cartão + valor </p>`;
6935 textoParcelaCartaoComBoleto += `<p>restante em até <span><span class="numParcelaBoleto">` + (parseInt(formaPagtoObj.numParcelaBoleto) - 1) + `</span>x</span> sem juros no boleto bancário </p>`;
6936 }
6937
6938 if(temDesconto) {
6939 result = result + `
6940 <div class="ssp-card-modal-forma-pagamento__tipos">`
6941
6942 if(textoParcelaBoleto)
6943 result = result + `
6944 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6945 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6946 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6947 <p><strong>Boleto Bancário</strong></p>`
6948 + textoParcelaBoleto +
6949 `</div>
6950 </div>`
6951
6952 if(textoParcelaCartoes)
6953 result = result + `
6954 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6955 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6956 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6957 <p><strong>Cartões</strong></p>
6958 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6959 + textoParcelaCartoes +
6960 `</div>
6961 </div>
6962 </div>
6963 `
6964 if(textoParcelaCartaoComBoleto)
6965 result = result + `
6966 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6967 <i class="ssp-card-modal-forma-pagamento__icon-boleto-e-cartao fa-solid fa-money-check-dollar"></i>
6968 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6969 <p><strong>Cartão + boleto bancário</strong></p>`
6970 + textoParcelaCartaoComBoleto +
6971 `</div>
6972 </div>`
6973 } else {
6974 result = result + `
6975 <div class="ssp-card-modal-forma-pagamento__tipos">`
6976
6977 if(textoParcelaCartoes)
6978 result = result + `
6979 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6980 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6981 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6982 <p><strong>Cartões</strong></p>
6983 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6984 + textoParcelaCartoes +
6985 `</div>
6986 </div>`
6987
6988 if(textoParcelaBoleto)
6989 result = result + `
6990 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6991 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6992 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6993 <p><strong>Boleto Bancário</strong></p>`
6994 + textoParcelaBoleto +
6995 `</div>
6996 </div>
6997 </div>
6998 `
6999
7000 if(textoParcelaCartaoComBoleto)
7001 result = result + `
7002 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
7003 <i class="ssp-card-modal-forma-pagamento__icon-boleto-e-cartao fa-solid fa-money-check-dollar"></i>
7004 <div class="ssp-card-modal-forma-pagamento__info-cartao">
7005 <p><strong>Cartão + boleto bancário</strong></p>`
7006 + textoParcelaCartaoComBoleto +
7007 `</div>
7008 </div>`
7009 }
7010
7011
7012
7013 if(temDesconto) {
7014 result = result + `
7015 <p class="txt-desconto-oito my-0">Pague à vista e ganhe <span style="color:#5ACC75;font-weight:bold">8% de desconto.</span></p>
7016 `
7017 }
7018
7019 result = result + `
7020 <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>`
7021
7022 if(temDesconto) {
7023 result = result + `
7024 <a class="btn btn-primary modal-extensao-btn-conheca mt-3" href="/descontos-e-parcelamentos" target="_blank">Conheça os descontos</a>
7025 `
7026 }
7027
7028 result = result + `
7029 </div>
7030 </div>
7031 `
7032
7033 return result;
7034 }
7035
7036 function montaHTMLModalFormaPgto(oferta, index, codigoUnidade){
7037
7038 var tipoCurso = $('[name="tipoCurso"]').val();
7039
7040 var formaPagtoObj = getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade);
7041
7042 var modalFormaPagto
7043 if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
7044 modalFormaPagto = $('#modalFormaPagtoExt').clone();
7045
7046 $.each(formaPagtoObj, function(k,v){
7047 if(modalFormaPagto.find('.'+k).length > 0)
7048 modalFormaPagto.find('.'+k).text(v);
7049 })
7050 } else if(isEmed) {
7051 modalFormaPagto = $('#modalPagtoEmed').clone();
7052
7053 $.each(formaPagtoObj, function(k,v){
7054 if(modalFormaPagto.find('.'+k).length > 0)
7055 modalFormaPagto.find('.'+k).text(v);
7056 })
7057 } else
7058 modalFormaPagto = $(createModalFormaPagto(formaPagtoObj, oferta, index));
7059
7060 modalFormaPagto.removeAttr('id');
7061 modalFormaPagto.removeClass('d-none');
7062 modalFormaPagto.attr('id','myModal_'+index);
7063
7064 if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)){
7065
7066 var botoaoCompraOk = modalFormaPagto.find('.modal-extensao-aluno__btn.ok');
7067 botoaoCompraOk.attr('id','btnComprarConhecaDescontoOk_'+index);
7068
7069 botoaoCompraOk.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
7070 botoaoCompraOk.attr('data-unidade', formaPagtoObj.dataUnidade);
7071 botoaoCompraOk.attr('data-evento', formaPagtoObj.dataEvento);
7072 botoaoCompraOk.attr('data-destino-compra', formaPagtoObj.destinoCompra);
7073 botoaoCompraOk.attr('data-index', index);
7074 botoaoCompraOk.addClass(formaPagtoObj.classeBotaoComprar);
7075
7076 var botoaoCompraNot =modalFormaPagto.find('.modal-extensao-aluno__btn.not');
7077 botoaoCompraNot.attr('id','btnComprarConhecaDescontoNot_'+index);
7078
7079 botoaoCompraNot.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
7080 botoaoCompraNot.attr('data-unidade', formaPagtoObj.dataUnidade);
7081 botoaoCompraNot.attr('data-evento', formaPagtoObj.dataEvento);
7082 botoaoCompraNot.attr('data-destino-compra', formaPagtoObj.destinoCompra);
7083 botoaoCompraNot.attr('data-index', index);
7084 botoaoCompraNot.addClass(formaPagtoObj.classeBotaoComprar);
7085
7086 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.sim').attr('id','btn-aluno-sim_'+index);
7087 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.nao').attr('id','btn-aluno-nao_'+index);
7088
7089 modalFormaPagto.find('.modal-extensao-voltar-icon').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index);
7090
7091 modalFormaPagto.find('.modal-extensao-btn-conheca').attr('id','btnModalExtConheca_'+index);
7092
7093 modalFormaPagto.find('.modal-pergunta-aluno-ext').attr('id','modalExtAluno_'+index);
7094
7095 modalFormaPagto.find('.msg-alunoSim').attr('id','msg-alunoSim_'+index);
7096 modalFormaPagto.find('.msg-alunoNao').attr('id','msg-alunoNao_'+index);
7097
7098 var botaoCompra = modalFormaPagto.find('.modal-extensao__btn.mt-3');
7099
7100 }else{
7101
7102 modalFormaPagto.find('.mt-4').attr('id','content_boleto_'+index);
7103 modalFormaPagto.find('.ssp-card-modal-forma-pagamento__btn-close').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index);
7104
7105 var botaoCompra = modalFormaPagto.find('.btn.w-100');
7106
7107 }
7108
7109 if(isEmed){
7110
7111 var elementoPai = modalFormaPagto.find('.ssp-card-modal-forma-pagamento');
7112
7113 //Cria botao inscreva-se ajustado ao modal
7114 var dadosAbertura = calculaTempoAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
7115 if($('#manutencao-compra').val()){
7116 textoBotao = $('#manutencao-compra').val();
7117 classeBotao = 'disabled manutencao';
7118 }else{
7119 if(oferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta){
7120 textoBotao = 'Lista de espera';
7121 classeBotao = 'btn-emed-lista-espera';
7122 }else{
7123 if (dadosAbertura.bolsaJaAberta || !oferta.dataAberturaMatricula || oferta.dataAberturaMatricula == ''){
7124 if(oferta.etapa == '0020' || oferta.etapa == '0030'){
7125 textoBotao = 'Lista de espera';
7126 classeBotao = 'btn-emed-lista-espera';
7127 }else{
7128 textoBotao = 'Fazer matrícula';
7129 classeBotao = '';
7130 }
7131 }else{
7132 textoBotao = 'Matrícula em '+formataDataAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
7133 classeBotao = 'disabled';
7134 }
7135 }
7136 }
7137 criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, 'btnComprarEmedModal_' + index, elementoPai, index);
7138 preencheDadosEmedModal(oferta, modalFormaPagto);
7139
7140 }else{
7141 botaoCompra.attr('id', "btnComprarFormaPgto_"+index);
7142 botaoCompra.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
7143 botaoCompra.attr('data-unidade', formaPagtoObj.dataUnidade);
7144 botaoCompra.attr('data-evento', formaPagtoObj.dataEvento);
7145 botaoCompra.attr('data-destino-compra', formaPagtoObj.destinoCompra);
7146 botaoCompra.attr('data-index', index);
7147 botaoCompra.addClass(formaPagtoObj.classeBotaoComprar);
7148 }
7149
7150 $('.oferta-slick-area_modal').append(modalFormaPagto);
7151 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
7152
7153 //Evita o erro de exibição de Nan
7154 if(oferta.numParcelaBoleto.length == 0){
7155 $('#content_boleto_'+index).remove();
7156 }
7157 }
7158
7159 function verificaTerminoDia(dataInicio, dataFim){
7160 if (dataInicio === dataFim) {
7161 return true;
7162 }
7163 return false;
7164 }
7165
7166
7167 function montaHTMLModalLocalRealizacao(oferta, index){
7168
7169 // Lógica para decidir o texto (Singular ou Plural)
7170 // Assume que oferta.dataInicio e oferta.dataFim existem
7171 var textoTitulo = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
7172 "ONDE A AULA IRÁ ACONTECER?" : // True: Mesmo dia (Singular)
7173 "ONDE AS AULAS VÃO ACONTECER?"; // False: Dias diferentes (Plural)
7174
7175 var tituloLocalRealizacao = (localLivreOnline(oferta.localEspacoExterno) && !isHibrido) ?
7176 '<i class="fas fa-wifi icon-wifi-title__modal"></i> <h6 class="title-idioma-online__modal"> Aulas Online - ao vivo</h6>'
7177 : '<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>';
7178
7179 if(textoFormatoHibrido.length>0 && oferta.espacoExterno=="true")
7180 textoFormatoHibrido += '</br>';
7181
7182 var localRealizacaoHTMLModal = htmlModalLocalRealizacao
7183 .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text())
7184 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido )
7185 .replace('\{localEspacoExterno\}', oferta.espacoExterno=="true"? oferta.localEspacoExterno: "" )
7186 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
7187 .replace('\{classeEnderecoRealizacao\}',oferta.ruaEspacoExterno != "" ? "" : "d-none")
7188 .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno)
7189 .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno)
7190 .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno)
7191 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7192 .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno)
7193 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7194 .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno)
7195 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7196 .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno)
7197 .replace(regIndex, index)
7198 .replace('\{tituloLocalRealizacao\}', tituloLocalRealizacao)
7199 .replace('\{classeEntendi\}', (localLivreOnline(oferta.localEspacoExterno)) ? "btn-modal-entendi__idioma-online" : "");
7200
7201 $('.oferta-slick-area_modal').append(localRealizacaoHTMLModal);
7202 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
7203
7204 if(oferta.ruaEspacoExterno == "")
7205 $('.localEspacoExternoTexto_'+index).removeClass('ssp-modal-local-realizacao__subtitle');
7206 }
7207
7208 function montaHTMLModalAntesCompra(oferta, index, codigoUnidade){
7209
7210 if(isEmed){
7211
7212 $('#modalAntesCompraEmed_' + oferta.indice).remove();
7213 const antesCompraHTMLModal = $('#modalAntesCompraEmed').clone();
7214 antesCompraHTMLModal.attr('id', 'modalAntesCompraEmed_' + oferta.indice);
7215 antesCompraHTMLModal.find('.ssp-card-modal-antes-compra__btn-close').addClass('ssp-card-modal-antes-compra__btn-close_'+oferta.indice);
7216 antesCompraHTMLModal.find('.ssp-card-modal-selecionar-outro__btn-close').addClass('ssp-card-modal-selecionar-outro__btn-close_'+oferta.indice);
7217 antesCompraHTMLModal.insertAfter('#modalAntesCompraEmed');
7218
7219 if(oferta.etapa == '0010'){
7220 if(oferta.permiteListaEspera == statusEmed.ESPERA){
7221 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010Espera').removeClass('d-none');
7222 antesCompraHTMLModal.find('#btnCompraLocalEmed').text('Ir para lista de espera');
7223 }else{
7224 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010').removeClass('d-none');
7225 }
7226 }else{
7227 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0020e0030').removeClass('d-none');
7228 }
7229
7230 const btnCompra = antesCompraHTMLModal.find('#btnCompraLocalEmed');
7231 btnCompra.attr('id', 'btnCompraLocalEmed_' + oferta.indice);
7232 btnCompra.attr('offercode', oferta.codigoOferta);
7233
7234 btnCompra.on('click', function(ev){
7235 ev.preventDefault();
7236 execCompraEmed(oferta);
7237 });
7238
7239 }else{
7240
7241 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
7242
7243
7244 var antesCompraHTMLModal = htmlModalAntesCompra
7245 .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text())
7246 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido )
7247 .replace('\{localEspacoExterno\}', oferta.espacoExterno=="true"? oferta.localEspacoExterno:"" )
7248 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
7249 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
7250 .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno)
7251 .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno)
7252 .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno)
7253 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7254 .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno)
7255 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7256 .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno)
7257 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
7258 .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno)
7259 .replace('\{componentBuyConfirmation\}', componentBuyConfirmation(codigoUnidade, oferta, dataEfetivaFormat))
7260 .replace('\{linkBtnBolsa\}', linkBolsa(oferta))
7261 .replace(regIndex, index);
7262
7263 $('.oferta-slick-area_modal').append(antesCompraHTMLModal);
7264 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
7265 }
7266 }
7267
7268 async function populaOfertas(ofertas){
7269
7270 //Zera variável que controla existência de ofertas com bolsa
7271 ofertasComBolsa = false;
7272
7273 objsTela.ofertas = ofertas;
7274
7275 if(ofertas && ofertas.length)
7276 $('#ssp-h3-turmas').show()
7277 else
7278 $('#ssp-h3-turmas').hide()
7279
7280 if(ofertas && ofertas.length > 1){
7281 //remove dupl
7282 const ofertasDistintas = [];
7283 ofertas.forEach(oferta => {
7284 if(ofertasDistintas.filter(dist => dist.codigoOferta == oferta.codigoOferta).length == 0){
7285 ofertasDistintas.push(oferta);
7286 }
7287 });
7288 ofertas = ofertasDistintas;
7289 }
7290
7291 if(isEmed){
7292
7293 $('.btn-filtro[value="0"]').attr('disabled','');
7294 $('.ssp-slick-ofertas-emed').empty();
7295 // executa a class do slick slider
7296 $('.ssp-slick-ofertas-emed').removeClass('slick-initialized slick-slider slick-dotted');
7297 ofertas = filtraOfertasEtapa(getEtapaSelecionadaEmed(), ofertas);
7298
7299 }
7300
7301 if(ofertas.length == 0){
7302
7303 if($('#unidades-ofertas').val() || $('#chkInscricao').prop('checked') || $('#chkBolsa').prop('checked'))
7304 hideCardSemTurmas(false)
7305
7306 $('.oferta-slick-area').empty();
7307 $('.prev-mobile, .next-mobile').addClass('d-none');
7308
7309 //Mostrar section registro interesse quando nao tiver oferta
7310 habilitarRegistroInteresse(true);
7311
7312 controlaPaginaBolsa()
7313 if(isEmed) $('.btn-filtro[value="0"]').removeAttr('disabled');
7314 return;
7315 }
7316 hideCardSemTurmas(true)
7317 if(!isEmed) $('.prev-mobile, .next-mobile').removeClass('d-none');
7318 habilitarRegistroInteresse(false);
7319
7320 $('.oferta-slick-area').empty();
7321 $('.oferta-slick-area_modal').empty();
7322 ofertas = ofertas.sort(function(a, b){
7323 return ordenar(a, b, 'ordenar');
7324 });
7325 // executa a class do slick slider
7326 $('.oferta-slick-area').removeClass('slick-initialized slick-slider slick-dotted');
7327
7328 //busca o codigoUnidade para o link do ecommerce
7329 if(!isAoVivo){
7330 var selectedUnidade = $('#unidades-ofertas').val().split('@')[0];
7331 for(var i=0;objsTela.unidades.length > i ;i++){
7332 if(selectedUnidade == objsTela.unidades[i].categoryId)
7333 codigoUnidade = objsTela.unidades[i].codigoUnidade;
7334 }
7335 }
7336
7337 // Montar object push - google tag manager - 2
7338 itensEcommerce = criaItensEcommerce(ofertas);
7339 sendEventEcommerce("view_item_list", Array.from(itensEcommerce.values()));
7340
7341 for(var i=0;ofertas.length > i ;i++){
7342
7343 var oferta = ofertas[i];
7344 var ofertaGratuita = excecaoCursoGratuito(oferta);
7345
7346 //guardando a oferta no map para chamar ajax com infos de bolsa em tempo real
7347 oferta['indice'] = i;
7348 ofertasMap.set(oferta.codigoOferta, oferta);
7349
7350 if(isAoVivo)
7351 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
7352
7353 if(isEmed && oferta.etapa == '0010'){
7354 try{
7355 let status = await getStatusEmed(oferta);
7356 oferta['permiteListaEspera'] = status;
7357 }catch(err){
7358 console.log(err);
7359 }
7360 }
7361 montaHTMLOferta(oferta, i, codigoUnidade, false);
7362
7363 if(!ofertaGratuita)
7364 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
7365
7366 montaHTMLModalLocalRealizacao(oferta, i);
7367 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
7368
7369 if(!ofertaGratuita)
7370 verificaBotaoBolsaSS(oferta);
7371
7372 verificaCursoAprendizagem(i);
7373 verificaCursoTrampolim(i, oferta.codigoOferta);
7374
7375 if(!ofertaGratuita)
7376 associaEventoBtnFormaPagamento(i);
7377
7378 associaEventoBtnComprar(i);
7379
7380 if(!ofertaGratuita)
7381 associaEventoBtnComprarDentroFormaPgto(i);
7382
7383 associaEventoBtnLocalRealizacao(i);
7384 associaEventosFecharModal(i);
7385
7386 if($('[name="tipoCurso"]').val() == 'extensao'){
7387 associaEventoBtnConheca(i);
7388 associaEventoBtnComprarConhecaDescontoOk(i);
7389 associaEventoBtnComprarConhecaDescontoNot(i);
7390 associaEventoBtnAlunoNao(i);
7391 associaEventoBtnAlunoSim(i);
7392 }
7393
7394 }
7395
7396 if(isEmed){
7397 sliderOfertasEmed();
7398 $('.btn-filtro[value="0"]').removeAttr('disabled');
7399 }
7400 else sliderOfertas();
7401
7402 controlaPaginaBolsa()
7403
7404 }
7405
7406 function hideCardSemTurmas(hide){
7407 if(!isEmed){
7408 if(hide)
7409 $('.ssp-card-oferta-curso__sem-vaga').addClass('d-none');
7410 else
7411 $('.ssp-card-oferta-curso__sem-vaga').removeClass('d-none');
7412 } else {
7413
7414
7415 if(hide || getEtapaSelecionadaEmed() == "0"){
7416 $('.sem-vaga-emed').addClass('d-none');
7417 }else{
7418 $('.sem-vaga-emed').removeClass('d-none');
7419 if($('.sem-vaga-emed.emed-transferencias-space:not(.d-none)').length ) return;
7420 var tamScreen = $(window).width();
7421 if(tamScreen < 768){
7422 $('.slick-area-emed').slick({
7423 slidesToShow: 2,
7424 slidesToScroll: 2,
7425 autoplay: false,
7426 infinite: false,
7427 dots: false,
7428 arrows: false,
7429 centerPadding: 0,
7430 centerMode: false,
7431 responsive: [
7432 {
7433 breakpoint: 768,
7434 settings: {
7435 slidesToShow: 1,
7436 slidesToScroll: 1,
7437 variableWidth: false,
7438 infinite: false,
7439 centerPadding: 0,
7440 centerMode: false,
7441 dots: true,
7442 }
7443 }
7444 ]
7445 });
7446 }
7447 }
7448 }
7449 }
7450
7451 function verificaCursoAprendizagem(i){
7452
7453 //Esconde elementsos quando o curso é aprendizagem
7454 if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){
7455 $('#btnComprar_'+i).remove();
7456 $('#container_investimento_'+i).remove();
7457 $('#container_forma_pgto_'+i).remove();
7458
7459 var avisoAprendizagem = $('#aviso-curso-aprendizagem').clone();
7460 let btnFormAprendizagem = '<button class="btn btn-lg btn-success w-100 mt-3 btnModalAprendizagem" data-modal="open-modal" style="font-size:16px;background:#1FC923;font-weight: 600;">Preencher formulário</button>'
7461 avisoAprendizagem.removeAttr('id');
7462 avisoAprendizagem.removeClass('d-none');
7463 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoAprendizagem);
7464 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(btnFormAprendizagem);
7465 }
7466 }
7467
7468 function verificaCursoTrampolim(i, codOferta){
7469 if(ehCursoTrampolim){
7470 $('#btnComprar_'+i).remove();
7471 $('#container_investimento_'+i).remove();
7472 $('#container_forma_pgto_'+i).remove();
7473 $('.ssp-card-oferta-curso .codigoOferta_'+codOferta).hide();
7474
7475 var avisoTrampolim = $('#avisoTrampolim').clone();
7476 avisoTrampolim.removeAttr('id');
7477 avisoTrampolim.removeClass('d-none');
7478 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoTrampolim);
7479 }
7480 }
7481
7482 function verificaBotoesEmed(dadosOferta, verificaBolsa) {
7483
7484 var elementoPai = $('.codigoOferta_' + dadosOferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
7485
7486 //INICIO - Logica para Matricula
7487
7488 //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
7489 var dadosAberturaMatricula = calculaTempoAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
7490
7491 var textoBotaoMatricula = '';
7492 var exibirBotaoMatricula = true;
7493 var classeBotaoMatricula = '';
7494 var htmlBotaoMatricula = '';
7495
7496 if (dadosAberturaMatricula.exibirContador) {
7497 textoBotaoMatricula = dadosAberturaMatricula.textoContador;
7498 exibirBotaoMatricula = false;
7499 }
7500
7501 //exibe o botão sem cronômetro
7502 if (exibirBotaoMatricula) {
7503 if ($('#manutencao-compra').val()) {
7504 textoBotaoMatricula = $('#manutencao-compra').val();
7505 classeBotaoMatricula = 'disabled manutencao';
7506 } else {
7507
7508 if (dadosOferta.permiteListaEspera == statusEmed.ESPERA && dadosAberturaMatricula.bolsaJaAberta) {
7509 textoBotaoMatricula = 'Lista de espera';
7510 classeBotaoMatricula = 'btn-emed-lista-espera';
7511 } else {
7512 classeBotaoMatricula = '';
7513 if (dadosAberturaMatricula.bolsaJaAberta || !dadosOferta.dataAberturaMatricula || dadosOferta.dataAberturaMatricula == '') {
7514 textoBotaoMatricula = 'Fazer matrícula';
7515
7516 if (dadosOferta.etapa == '0020' || dadosOferta.etapa == '0030') {
7517 textoBotaoMatricula = 'Lista de espera';
7518 classeBotaoMatricula = 'btn-emed-lista-espera';
7519 }
7520 } else {
7521 textoBotaoMatricula = 'Matrícula em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
7522 }
7523 if (!dadosAberturaMatricula.bolsaJaAberta)
7524 classeBotaoMatricula = 'disabled';
7525 }
7526 }
7527
7528 criaBotaoInscreverEmed(dadosOferta, textoBotaoMatricula, classeBotaoMatricula, 'btnComprarEmed_' + dadosOferta.indice, elementoPai);
7529
7530 } else { //exibe o cronometro para matricula
7531
7532 //codigoOferta como index para usar o ofertasMap
7533 htmlBotaoMatricula = '<button id="btnContadorComprar_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --inscreva-se">Matrícula em <span>' + textoBotaoMatricula + '</span></button>';
7534 elementoPai.append(htmlBotaoMatricula);
7535 }
7536
7537 //INICIO - Logica para Botão Bolsa
7538
7539 if (!verificaBolsa || !dadosOferta.dataAberturaBolsaOferta || dadosOferta.dataAberturaBolsaOferta == '') {
7540 dadosOferta.vagasBolsaOferta = false;
7541 dadosOferta.botaoBolsaOferta = false;
7542 }
7543
7544 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7545 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7546
7547 var textoBotaoBolsa = '';
7548 var classeBotaoBolsa = '';
7549 var exibirBotaoBolsa = false;
7550 var exibirContadorBolsa = false;
7551 var htmlBotaoBolsa = '';
7552
7553 //verifica se o botão de concorrer a bolsa deve aparecer
7554 //Oferta EMED possui bolsa apenas no 1o ano
7555 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !dadosAberturaBolsa.exibirContador) {
7556 exibirBotaoBolsa = true;
7557 if ($('#manutencao-bolsa').val()) {
7558 classeBotaoBolsa = 'disabled manutencao';
7559 textoBotaoBolsa = $('#manutencao-bolsa').val();
7560 } else {
7561 if (dadosOferta.vagasBolsaOferta) {
7562 classeBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? '' : 'disabled';
7563 textoBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? 'Bolsa de estudo' : 'Bolsa em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7564 } else {
7565 classeBotaoBolsa = 'disabled';
7566 textoBotaoBolsa = 'Bolsas de Estudo Esgotadas';
7567 }
7568 }
7569 }
7570
7571 //Verifica se o botão do cronômetro deve aparecer
7572 if (dadosAberturaBolsa.exibirContador) {
7573 textoBotao = dadosAberturaBolsa.textoContador;
7574 textoBotaoBolsa = dadosAberturaBolsa.textoContador;
7575 exibirContadorBolsa = true;
7576 exibirBotaoBolsa = false;
7577 }
7578
7579 if (exibirBotaoBolsa) {
7580
7581 if (!ofertasComBolsa) ofertasComBolsa = true;
7582
7583 criaBotaoBolsaEmed(dadosOferta, textoBotaoBolsa, classeBotaoBolsa);
7584
7585 } else if (exibirContadorBolsa) {
7586
7587 if (!ofertasComBolsa && dadosOferta.etapa == '0010') ofertasComBolsa = true;
7588
7589 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta) {
7590 htmlBotaoBolsa = '<button id="btnContadorBolsa_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --bolsas">Bolsa em <span>' + textoBotaoBolsa + '</span></button>';
7591 elementoPai.append(htmlBotaoBolsa);
7592 }
7593 }
7594 }
7595
7596 function criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, idBotao, elementoPai, index){
7597 criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai);
7598 var btnInscr = elementoPai.find('#btnComprarEmedModal_' + index);
7599 btnInscr.removeClass(btnInscr.classList);
7600 btnInscr.addClass('btn btn-lg btn-success w-100');
7601 btnInscr.attr('style', 'margin-top: 20px;font-weight:600');
7602
7603 //Reposiciona o botao voltar
7604 var btnVoltar = elementoPai.find('.ssp-btn-emed__voltar-curso');
7605 elementoPai.find('.ssp-btn-emed__voltar-curso').remove();
7606 elementoPai.append(btnVoltar);
7607 btnVoltar.addClass('ssp-btn-emed__voltar-curso_'+index);
7608 btnVoltar.click(() => {
7609 $('[id^="myModal_"]').each(function(index,modal){
7610 modal.style.display = "none";
7611 })
7612 });
7613 }
7614
7615 function preencheDadosEmedModal(oferta,$modal){
7616 const parcelaEntrada = 1;
7617 $modal.find('.numParcelaCartoesBoleto').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7618 $modal.find('.precoParcelaCartoesBoleto').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7619 $modal.find('.numParcelaEmedModal').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7620 $modal.find('.precoParcelaEmedModal').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7621 }
7622
7623
7624 function criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai){
7625 if(oferta.permiteListaEspera && oferta.permiteListaEspera == statusEmed.NAO_ENCONTRADA) return;
7626 var htmlBotao = '<button id="'+ idBotao +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --inscreva-se '+ classeBotao +'"><span>'+textoBotao+'</span></button>';
7627 elementoPai.append(htmlBotao);
7628
7629 if(!classeBotao.includes('disabled')){
7630
7631 elementoPai.on("click", '#'+ idBotao, function(ev){
7632 ev.preventDefault();
7633 const _modal = $('#modalAntesCompraEmed_'+$(this).data('index'));
7634 _modal.css('display','flex');
7635
7636
7637 });
7638
7639 }
7640
7641 }
7642
7643 function criaBotaoBolsaEmed(oferta, textoBotaoBolsa, classeBotaoBolsa=""){
7644
7645 var htmlBotao = '<a id="btnBolsa_'+ oferta.indice +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --bolsas '+ classeBotaoBolsa +'">'+ textoBotaoBolsa +'</a>';
7646 $('.codigoOferta_'+oferta.codigoOferta+' .ssp-ofertas-emed__card-info-investimento').append(htmlBotao);
7647
7648 if(!classeBotaoBolsa.includes('disabled')){
7649 // Associa o evento de clique no botão de bolsa
7650 $('#btnBolsa_'+oferta.indice).attr('href', linkBolsa(oferta));
7651 $('#btnBolsa_'+oferta.indice).attr('target', '_blank');
7652 //$('#btnBolsa_'+oferta.indice).attr('style', 'text-transform:uppercase;');
7653
7654 }
7655 }
7656
7657 function criaBotaoBolsa(oferta, textoBotaoBolsa, classeBotaoBolsa=""){
7658
7659 const botao = $('<a>'+ textoBotaoBolsa +'</a>');
7660 botao.attr('id', 'btnBolsa_' + oferta.indice);
7661 botao.attr('data-index', oferta.indice);
7662 botao.attr('class', 'btn btn-lg btn-info w-100 mt-3 ' + (classeBotaoBolsa || ''));
7663 botao.css('font-size', '14px');
7664 botao.css('font-weight', '600');
7665 botao.css('background-color', '#004EFF');
7666 if(!classeBotaoBolsa.includes('disabled')){
7667 if(oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)){
7668 botao.attr('data-espaco-ex', 'true');
7669 botao.click((ev)=>{
7670 ev.preventDefault();
7671 $('#btnCompraLocal_'+oferta.indice).hide();
7672 $('#btnBolsaLocal_'+oferta.indice).show();
7673 const _modal = $('#modalAntesCompra_'+oferta.indice);
7674 _modal.css('display','flex');
7675 });
7676 }else{
7677 botao.attr('href', linkBolsa(oferta));
7678 botao.attr('target', '_blank');
7679 }
7680 }
7681
7682 return botao;
7683
7684 }
7685
7686 function verificaBotaoBolsaSS(oferta, codigoUnidade){
7687
7688
7689 if(!isEmed && (!oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == '') ) return;
7690
7691 if(!ehCursoTrampolim){
7692 $.ajax({
7693 url : getUrlConsultaBolsa(oferta),
7694 type : 'get',
7695 dataType: 'json',
7696 beforeSend: function (xhr) {
7697 xhr.setRequestHeader ("Authorization", "KGG4KMW5s0CVowr7d6y6Ww==");
7698 },
7699 })
7700 .done(function(infosBolsa){
7701
7702
7703 if(infosBolsa != null && typeof infosBolsa !== 'undefined'){
7704
7705 var codigoOfertaRetornoBolsa = infosBolsa.DATA[0].COD_EVENTO;
7706 var retornoOfertaBolsaSenac = infosBolsa.DATA[0];
7707
7708 //Sobrescreve as flags de bolsa com o retorno do serviço SS
7709 ofertasMap.get(codigoOfertaRetornoBolsa).vagasBolsaOferta = retornoOfertaBolsaSenac.TEM_VAGA_BOLSA;
7710 ofertasMap.get(codigoOfertaRetornoBolsa).botaoBolsaOferta = retornoOfertaBolsaSenac.BOTAO_BOLSA;
7711
7712 var dadosOferta = ofertasMap.get(codigoOfertaRetornoBolsa);
7713
7714 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7715 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta);
7716 var textoBotaoBolsa = '';
7717 var classeBotaoBolsa = '';
7718 var textoBotaoContadorBolsa = '';
7719 var exibirBotaoBolsa = false;
7720 var exibirContadorBolsa = false;
7721
7722 //EMED
7723 if(isEmed){
7724 verificaBotoesEmed(ofertasMap.get(codigoOfertaRetornoBolsa), true);
7725 return;
7726 }
7727
7728 //Verifica o texto do botão de bolsa
7729 if($('#manutencao-bolsa').val()) textoBotaoBolsa = $('#manutencao-bolsa').val();
7730 else{
7731
7732 if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA){
7733
7734 if(dadosAberturaBolsa.bolsaJaAberta)
7735 textoBotaoBolsa = "Inscrever para bolsa de estudo";
7736
7737 else
7738 textoBotaoBolsa = "Inscrições para bolsas a partir de "+formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7739
7740 if(!ofertasComBolsa){ ofertasComBolsa = true;
7741 }
7742 }else
7743 textoBotaoBolsa = "Vagas esgotadas para bolsas de estudo";
7744 }
7745
7746 //verifica se o botão de concorrer a bolsa deve aparecer
7747 if(retornoOfertaBolsaSenac.BOTAO_BOLSA && !dadosAberturaBolsa.exibirContador){
7748
7749 exibirBotaoBolsa = true;
7750
7751 if(!ofertasComBolsa) ofertasComBolsa = true;
7752
7753 if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA && dadosAberturaBolsa.bolsaJaAberta && !$('#manutencao-bolsa').val()){
7754 classeBotaoBolsa = '';
7755 }else{
7756 classeBotaoBolsa = 'disabled';
7757 }
7758 }
7759
7760 //Verifica se o botão do cronômetro deve aparecer
7761 if(dadosAberturaBolsa.exibirContador && !$('#manutencao-bolsa').val()){
7762 textoBotaoContadorBolsa = dadosAberturaBolsa.textoContador;
7763 exibirContadorBolsa = true;
7764 }
7765
7766 if(exibirBotaoBolsa)
7767 $('.codigoOferta_'+codigoOfertaRetornoBolsa+' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append( criaBotaoBolsa(dadosOferta, textoBotaoBolsa, classeBotaoBolsa) )
7768 else if(exibirContadorBolsa)
7769 $('.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>')
7770 else {
7771 $('.codigoOferta_'+codigoOfertaRetornoBolsa+'.content-btn-bolsa').hide()
7772 $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide()
7773 }
7774
7775 }else{
7776 //EMED
7777 if(isEmed){
7778 verificaBotoesEmed(oferta, false);
7779 }
7780 }
7781
7782 controlaPaginaBolsa()
7783 })
7784 .fail(function(){
7785 $('.content-btn-bolsa.codigoOferta_'+oferta.codigoOferta).hide()
7786 $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide()
7787
7788 //EMED
7789 if(isEmed){
7790 verificaBotoesEmed(oferta, false);
7791 }
7792 });
7793
7794
7795 }
7796
7797 }
7798
7799 function controlaPaginaBolsa(){
7800 if(ofertasComBolsa)
7801 $("#ssp-abrir-pagina-bolsa").removeClass("d-none")
7802 else
7803 $("#ssp-abrir-pagina-bolsa").addClass("d-none")
7804 }
7805
7806 function associaEventoBtnFormaPagamento(i){
7807 var modal = document.getElementById("myModal_"+i);
7808
7809 var btn = document.getElementById("myBtn_"+i);
7810
7811 if(btn!=null){
7812 btn.onclick = function(ev) {
7813 event.preventDefault()
7814
7815 $('#modalExtAluno_'+i).addClass('d-none');
7816
7817 var elem = $(ev.target);
7818 var _modal = document.getElementById(
7819 'myModal_'+elem.data('index'));
7820 _modal.style.display = "block";
7821 $('#myModal_'+i).find('.modal-extensao_content:first-child').removeClass('d-none');
7822
7823 }
7824 }
7825
7826
7827
7828
7829 }
7830
7831
7832 function actionBtnComprar(elem){
7833
7834 // Montar object push - google tag manager - 3
7835 ofertaSelecionada = itensEcommerce.get(elem.attr('data-evento'))
7836 sendEventEcommerce("select_item", ofertaSelecionada);
7837 sendEventEcommerce("view_item", ofertaSelecionada);
7838
7839 //Verifica se deve exibir o modal com a localização
7840 if(elem.attr('data-espaco-ex') == 'true'){
7841 $('#btnCompraLocal_'+elem.data('index')).show();
7842
7843 //Limpa onclicks para nao repetir execucao
7844 $('#modalAntesCompra_'+elem.data('index')).off('click', '#btnCompraLocal_'+elem.data('index'))
7845 $('#modalAntesCompra_'+elem.data('index')).on('click', '#btnCompraLocal_'+elem.data('index'), function () {
7846 // Montar object push - google tag manager - 4
7847 sendEventEcommerce("add_to_cart", ofertaSelecionada);
7848 if( elem.attr('data-destino-compra') != '2' )
7849 sendEventEcommerce("begin_checkout", ofertaSelecionada);
7850 })
7851 $('#btnBolsaLocal_'+elem.data('index')).hide();
7852 const _modal = $('#modalAntesCompra_'+elem.data('index'));
7853 _modal.css('display','flex');
7854 }else{
7855 var urlCompra = linkBotaoCompra.replace('\{codigoUnidade\}', elem.attr('data-unidade')).replace('\{codigoOferta\}', elem.attr('data-evento'));
7856
7857 if( elem.attr('data-destino-compra') == '2' ){
7858 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
7859
7860 addItemBackpack(elem.attr('data-evento'), '#' + elem.attr('id'),elem.attr('data-unidade'), dataEfetivaFormat);
7861
7862 }else{
7863 window.open(urlCompra, '_blank');
7864 }
7865 }
7866
7867
7868
7869 }
7870
7871 function associaEventoBtnComprar(i){
7872 var btnComprar = document.getElementById("btnComprar_"+i);
7873
7874 if(btnComprar != null && !btnComprar.classList.contains('disabled')){
7875 btnComprar.onclick = function(ev) {
7876
7877 ev.preventDefault()
7878 var elem = $(ev.target);
7879 actionBtnComprar(elem);
7880
7881 }
7882 }
7883 }
7884
7885 function associaEventoBtnComprarDentroFormaPgto(i){
7886 var btnComprarFormaPgto = document.getElementById("btnComprarFormaPgto_"+i);
7887
7888 if(btnComprarFormaPgto != null && !btnComprarFormaPgto.classList.contains('disabled')){
7889 btnComprarFormaPgto.onclick = function(ev) {
7890 event.preventDefault()
7891 var elem = $('#btnComprarFormaPgto_'+i);
7892 actionBtnComprar(elem);
7893 }
7894 }
7895 }
7896
7897 function associaEventoBtnComprarConhecaDescontoOk(i){
7898 var btnComprarConhecaDescontoOk = document.getElementById("btnComprarConhecaDescontoOk_"+i);
7899
7900 if(btnComprarConhecaDescontoOk != null){
7901 btnComprarConhecaDescontoOk.onclick = function(ev) {
7902 event.preventDefault()
7903 var elem = $(ev.target);
7904 actionBtnComprar(elem);
7905 }
7906 }
7907 }
7908
7909 function associaEventoBtnComprarConhecaDescontoNot(i){
7910 var btnComprarConhecaDescontoNot = document.getElementById("btnComprarConhecaDescontoNot_"+i);
7911
7912 if(btnComprarConhecaDescontoNot != null){
7913 btnComprarConhecaDescontoNot.onclick = function(ev) {
7914 event.preventDefault()
7915 var elem = $(ev.target);
7916 actionBtnComprar(elem);
7917 }
7918 }
7919 }
7920
7921 function associaEventoBtnAlunoNao(i){
7922 var btnAlunoNao = document.getElementById("btn-aluno-nao_"+i);
7923
7924 if(btnAlunoNao != null){
7925 btnAlunoNao.onclick = function(ev) {
7926 event.preventDefault()
7927 var elem = $(ev.target);
7928 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7929 elem.closest('.sim').removeClass('modal-extensao-btn-aluno-sim-ativo');
7930 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7931 $('#msg-alunoNao_'+i).removeClass('d-none');
7932 $('#msg-alunoSim_'+i).addClass('d-none');
7933 }
7934 }
7935 }
7936
7937 function associaEventoBtnAlunoSim(i){
7938 var btnAlunoSim = document.getElementById("btn-aluno-sim_"+i);
7939
7940 if(btnAlunoSim != null){
7941 btnAlunoSim.onclick = function(ev) {
7942 event.preventDefault()
7943 var elem = $(ev.target);
7944 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7945 elem.closest('.nao').removeClass('modal-extensao-btn-aluno-sim-ativo');
7946 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7947 $('#msg-alunoSim_'+i).removeClass('d-none');
7948 $('#msg-alunoNao_'+i).addClass('d-none');
7949
7950 }
7951 }
7952 }
7953
7954 function associaEventoBtnConheca(i){
7955 var btnModalExtConheca = document.getElementById("btnModalExtConheca_"+i);
7956
7957 if(btnModalExtConheca != null){
7958 btnModalExtConheca.onclick = function(ev) {
7959 event.preventDefault();
7960 var elem = $(ev.target);
7961 elem.closest('.modal-extensao_content').addClass('d-none');
7962 $('#modalExtAluno_'+i).removeClass('d-none');
7963 $('#msg-alunoSim_'+i).addClass('d-none');
7964 $('#msg-alunoNao_'+i).addClass('d-none');
7965 $('#btn-aluno-sim_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7966 $('#btn-aluno-nao_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7967
7968 }
7969 }
7970 }
7971
7972 function associaEventoBtnLocalRealizacao(i){
7973 var btnLocalRealizacao = document.getElementById("btnLocalRealizacao_"+i);
7974
7975 if(btnLocalRealizacao!=null){
7976 btnLocalRealizacao.onclick = function(ev) {
7977 event.preventDefault();
7978 var elem = $(ev.target);
7979 var _modal = document.getElementById(
7980 'modalLocalRealizacao_'+elem.data('index'));
7981 _modal.style.display = "flex";
7982 }
7983 }
7984 }
7985
7986 function associaEventosFecharModal(i){
7987
7988 var span = document.getElementsByClassName("ssp-card-modal-forma-pagamento__btn-close_"+i);
7989 var closeModalLocalRealizacao = document.getElementsByClassName("ssp-card-modal-local-realizacao__btn-close_"+i)[0];
7990 var closeModalAntesCompra = document.getElementsByClassName("ssp-card-modal-antes-compra__btn-close_"+i)[0];
7991 var closeModalSelecionarOutro = document.getElementsByClassName("ssp-card-modal-selecionar-outro__btn-close_"+i)[0];
7992 var btnEntendiLocalRealizacao = document.getElementsByClassName("ssp-modal-local-realizacao__btn_"+i)[0];
7993 var closeModalBotaoBolsa = document.getElementById("btnBolsaLocal_"+i)
7994
7995 if(isEmed){
7996 var closeModalFormaPagamento = document.getElementsByClassName("ssp-btn-emed__voltar-curso_"+i);
7997 for (const val of closeModalFormaPagamento) {
7998
7999 val.onclick = function() {
8000 $('[id^="myModal_"]').each(function(index,modal){
8001 modal.style.display = "none";
8002 });
8003 }
8004 };
8005 }
8006
8007 //event close modal
8008 for (const val of span) {
8009
8010 val.onclick = function() {
8011 $('[id^="myModal_"]').each(function(index,modal){
8012 modal.style.display = "none";
8013 });
8014 }
8015 };
8016
8017 closeModalLocalRealizacao.onclick = function() {
8018
8019 $('[id^="modalLocalRealizacao_"]').each(function(index,modal){
8020 modal.style.display = "none";
8021
8022 });
8023 }
8024
8025 closeModalAntesCompra.onclick = function() {
8026
8027 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
8028 modal.style.display = "none";
8029 });
8030 }
8031
8032 closeModalSelecionarOutro.onclick = function() {
8033
8034 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
8035 modal.style.display = "none";
8036 });
8037 }
8038
8039 btnEntendiLocalRealizacao.onclick = function() {
8040
8041 $('[id^="modalLocalRealizacao_"]').each(function(index,modal){
8042 modal.style.display = "none";
8043 });
8044 }
8045
8046 if(closeModalBotaoBolsa != null){
8047 closeModalBotaoBolsa.onclick = function() {
8048
8049 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
8050 modal.style.display = "none";
8051 });
8052 }
8053 }
8054
8055 // When the user clicks anywhere outside of the modal, close it
8056 window.onclick = function(event) {
8057
8058 $('[id^="myModal_"]').each(function(index,_modal){
8059 if (event.target == _modal)
8060 _modal.style.display = "none";
8061 });
8062 $('[id^="modalLocalRealizacao_"]').each(function(index,_modal){
8063 if (event.target == _modal)
8064 _modal.style.display = "none";
8065 });
8066
8067 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,_modal){
8068 if (event.target == _modal)
8069 _modal.style.display = "none";
8070 });
8071 }
8072 }
8073
8074 function turmasIniciadas(dataInicioCurso){
8075
8076 var hoje = new Date();
8077 var dataInicioPartes = dataInicioCurso.split('/');
8078 var dataInicioCursoOferta = new Date(dataInicioPartes[2], dataInicioPartes[1] - 1, dataInicioPartes[0] , hoje.getHours(),hoje.getMinutes(),hoje.getSeconds(),hoje.getMilliseconds());
8079
8080 return dataInicioCursoOferta.getTime() <= hoje.getTime();
8081 }
8082
8083
8084 function concatSTR(str1, str2, separador){
8085
8086 if(str2){
8087
8088 return str1+separador+str2;
8089 }
8090 return str1;
8091 }
8092
8093 //Formata exibicao de datas conforme especificacao GCR
8094 function formataPeriodo(dataInicio, dataFim){
8095
8096 // Se as datas são iguais, retornar apenas a data final
8097 if (dataInicio === dataFim) {
8098 return dataFim;
8099 }
8100
8101 var dtInicioPartes = dataInicio.split('/');
8102 var dtFimPartes = dataFim.split('/');
8103
8104 //Não exibir o número zero antes dos números e o dia 1 como 1º
8105 var dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) +'/'+parseInt(dtInicioPartes[1].trim())+'/'+dtInicioPartes[2].trim();
8106 var dFimFormatada = (parseInt(dtFimPartes[0].trim()) == 1 ? '1º' : parseInt(dtFimPartes[0].trim())) +'/'+parseInt(dtFimPartes[1].trim())+'/'+dtFimPartes[2].trim();
8107
8108 //Quando um curso inicia e finaliza dentro do mesmo ano: 17/2 a 25/4/2020
8109 if(dtInicioPartes[2].trim() == dtFimPartes[2].trim()){
8110
8111 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()))+'/'+parseInt(dtInicioPartes[1].trim());
8112
8113 //Quando um curso inicia e finaliza dentro do mesmo mês: 5 a 30/4/2020
8114 if(dtInicioPartes[1].trim() == dtFimPartes[1].trim())
8115 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()));
8116 }
8117
8118 return dInicioFormatada + ' a ' + dFimFormatada;
8119 }
8120
8121 //Decrementa os contadores de abertudas de bolsa
8122 function atualizaTempoAberturasBolsas() {
8123
8124 var btnsContador = (isEmed) ? $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]') : $('[id^="btnContadorBolsa_"]');
8125
8126 btnsContador.each(function() {
8127
8128 var index = $(this).data('index');
8129 var elId = $(this).attr('id');
8130 var btnContent = $(this).parent('.ssp-btn-group__content');
8131
8132 if(isEmed){
8133 //EMED filtra ofertas e usa outra lista para referenciar as ofertas carregadas
8134 var dadosAberturaBolsa = calculaTempoAberturaBolsa((elId.indexOf('btnContadorBolsa') >= 0) ? ofertasMap.get('' +index).dataAberturaBolsaOferta : ofertasMap.get('' +index).dataAberturaMatricula, ofertasMap.get('' + index).horaAberturaBolsaOferta);
8135 }else{
8136 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
8137 var dadosAberturaBolsa = calculaTempoAberturaBolsa(objsTela.ofertas[index].dataAberturaBolsaOferta, objsTela.ofertas[index].horaAberturaBolsaOferta, objsTela.ofertas[index].botaoBolsaOferta);
8138 }
8139
8140 $(this).find('span').text(dadosAberturaBolsa.hours+':'+dadosAberturaBolsa.minutes+':'+dadosAberturaBolsa.seconds);
8141
8142 //Se esgotou o contador
8143 if(dadosAberturaBolsa.hours == 0 && dadosAberturaBolsa.minutes == 0 && dadosAberturaBolsa.seconds == 0){
8144
8145 //remove o contador
8146 $(this).remove();
8147
8148 //Habilitar inscrição EMED
8149 if(isEmed){
8150 var ofertaEmed = ofertasMap.get('' +index);
8151 var btnIndex = elId.slice(elId.indexOf('_')+1);
8152 var elementoPai = $('.codigoOferta_'+ofertaEmed.codigoOferta+' .ssp-ofertas-emed__card-info-investimento');
8153
8154 if(elId.indexOf('btnContadorBolsa') >= 0){
8155 if($('#manutencao-bolsa').val())
8156 criaBotaoBolsaEmed(ofertaEmed, $('#manutencao-bolsa').val(), 'disabled manutencao');
8157 else if(ofertaEmed.vagasBolsaOferta == true || ofertaEmed.vagasBolsaOferta == "true")
8158 criaBotaoBolsaEmed(ofertaEmed, 'Bolsa de estudo', '');
8159 else
8160 criaBotaoBolsaEmed(ofertaEmed, 'Bolsas de Estudo Esgotadas', 'disabled');
8161 }else if(elId.indexOf('btnContadorComprar') >= 0){
8162
8163 var textoBotao, classeBotao;
8164
8165 textoBotao = $('#manutencao-compra').val() || 'Fazer matrícula';
8166 classeBotao = $('#manutencao-compra').val() ? 'disabled manutencao' : '';
8167
8168 //Garante a ordenação dos botoes (matricula depois bolsa)
8169 const botaoBolsa = document.getElementById('btnBolsa_' + btnIndex) || document.getElementById('btnContadorBolsa_' + btnIndex);
8170
8171 botaoBolsa?.remove(); // Remove se existir
8172
8173 criaBotaoInscreverEmed(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmed_' + ofertaEmed.indice, elementoPai);
8174
8175 if (botaoBolsa) {
8176 elementoPai.append(botaoBolsa);
8177 }
8178
8179 //Altera o botao do modal de pagamento
8180 var modal = $('#myModal_' + btnIndex).find('.ssp-card-modal-forma-pagamento');
8181 var btnModal = modal.find('#btnComprarEmedModal_' + btnIndex);
8182 if(btnModal){
8183 btnModal.remove();
8184 criaBotaoInscreverEmedModal(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmedModal_' + btnIndex, modal, btnIndex);
8185 preencheDadosEmedModal(ofertaEmed,modal);
8186 }
8187
8188
8189 }
8190
8191 }else{
8192
8193 //Checa as condições das vagas do botão de bolsa
8194 var btnBolsaHTML = null;
8195 if($('#manutencao-bolsa').val())
8196 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], $('#manutencao-bolsa').val(), 'disabled manutencao');
8197 else if(objsTela.ofertas[index].vagasBolsaOferta == true || objsTela.ofertas[index].vagasBolsaOferta == "true")
8198 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Inscrever para bolsa de estudo');
8199 else
8200 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Vagas esgotadas para bolsas de estudo', 'disabled');
8201
8202 $('.codigoOferta_'+ objsTela.ofertas[index].codigoOferta +'.ssp-container-botao-bolsa').append(btnBolsaHTML);
8203
8204
8205 }
8206 }
8207
8208 });
8209
8210 }
8211
8212 // Retorna um objeto com o tempo de abertura da bolsa, em horas, minutos e segundos
8213 function calculaTempoAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa){
8214
8215 var dadosAberturaBolsa = {
8216 days : '',
8217 hours : '',
8218 minutes : '',
8219 seconds : '',
8220 bolsaJaAberta: false,
8221 exibirContador: false,
8222 textoContador: ''
8223 };
8224
8225 if(dataAberturaBolsa.length == 0 || horaAberturaBolsa.length == 0)
8226 return dadosAberturaBolsa;
8227
8228 var now = todayG;
8229 var dia = now.getDate();
8230 var horarioDia = now.getHours();
8231
8232 var tempoRestante= tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa);
8233
8234 //console.log('tempo restante '+tempoRestante);
8235
8236 var diaAberturaBolsa = dataAberturaBolsa.split('-')[2];
8237
8238 var delta = tempoRestante / 1000;
8239
8240 var days = Math.floor(delta / 86400);
8241
8242 delta -= days * 86400;
8243
8244 var hours = Math.floor(delta / 3600) % 24;
8245 delta -= hours * 3600;
8246
8247 var minutes = Math.floor(delta / 60) % 60;
8248 delta -= minutes * 60;
8249
8250 var seconds = Math.floor(delta % 60);
8251
8252 //Zerar contador para data que ja passou
8253 if(days < 0){
8254 dadosAberturaBolsa.days = 0;
8255 dadosAberturaBolsa.hours = '00';
8256 dadosAberturaBolsa.minutes = '00';
8257 dadosAberturaBolsa.seconds = '00';
8258 }else{
8259 dadosAberturaBolsa.days = days;
8260 dadosAberturaBolsa.hours = hours < 10 ? '0'+hours : hours;
8261 dadosAberturaBolsa.minutes = minutes < 10 ? '0'+minutes : minutes;
8262 dadosAberturaBolsa.seconds = seconds < 10 ? '0'+seconds : seconds;
8263 }
8264
8265 dadosAberturaBolsa.bolsaAberta = days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0;
8266 var horaExibeContador = 8;
8267 if(!isEmed && botaoBolsa == false){
8268 dadosAberturaBolsa.exibirContador = false;
8269 }else{
8270 dadosAberturaBolsa.exibirContador = days == 0 && horarioDia >= horaExibeContador && !dadosAberturaBolsa.bolsaAberta && (diaAberturaBolsa == dia);
8271 dadosAberturaBolsa.textoContador = dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ":"+ dadosAberturaBolsa.seconds;
8272 }
8273 dadosAberturaBolsa.bolsaJaAberta = tempoRestante < 0;
8274
8275 return dadosAberturaBolsa;
8276
8277 }
8278
8279 // Verifica se uma oferrta já chegou sua data de abertura
8280 function tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){
8281 // console.log(dataAberturaBolsa);
8282 // console.log(horaAberturaBolsa);
8283
8284 //var today = new Date();
8285
8286
8287 //console.log( "TodayG "+ todayG);
8288
8289 //Precisa fazer formatação nos horários pois pode estar como 9h ou 9h30
8290 var partesHora = horaAberturaBolsa.split('h');
8291
8292 var partesHora = partesHora.filter(function (el) {
8293 return el != "";
8294 });
8295
8296 //formato 9h
8297 if(partesHora.length == 1)
8298 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+horaAberturaBolsa.replace('h', '').trim()+":00");
8299
8300 else{
8301
8302 //format 9h3
8303 if(partesHora[1].length == 1)
8304 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1] +'0');
8305
8306 //formato 9h30
8307 else
8308 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1]);
8309 }
8310
8311 // console.log(aberturaBolsa);
8312 return aberturaBolsa - todayG;
8313 }
8314
8315 function formataDataAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){
8316 var dataPartes = dataAberturaBolsa.split('-');
8317
8318 return dataPartes[2]+'/'+dataPartes[1]+ ' às '+horaAberturaBolsa.replace('h', '').trim()+' horas';
8319
8320 }
8321
8322 function formataValor(valor){
8323
8324 if(!valor.toString().includes(".")){
8325 valor = parseFloat(valor).toLocaleString('pt-BR')+",00";
8326 }else{
8327 valor = parseFloat(valor).toLocaleString('pt-BR');
8328
8329 if(valor.split(",").length == 2){
8330
8331 if(valor.split(",")[1].length == 1)
8332 valor += "0";
8333
8334 }else
8335 valor += ",00";
8336 }
8337
8338 return valor;
8339 }
8340
8341 function ajustarCasasDecimaisSemArredondar(numero, casas) {
8342 const str = numero + ''
8343 const arr = str.split('.')
8344 return parseFloat(arr[0].concat('.').concat(arr[1] ? arr[1].substring(0, casas) : '0'))
8345 }
8346
8347 function possuiCriteriosDesconto2022(dt) {
8348 return dt.substring(dt.lastIndexOf('/') + 1) >= 2022
8349 && (
8350 $('[name="tipoCurso"]').val() == 'livre'
8351 || ($('[name="tipoCurso"]').val() == 'tecnico' && $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
8352 || $('[name="tipoCurso"]').val() == 'extensao'
8353 )
8354 }
8355
8356 function strToFloat(str) {
8357 const separator = str.includes(',') ? ',' : '.'
8358
8359 const numArr = str.split(separator)
8360 const inteiro = numArr[0].replaceAll('.', '').replaceAll(',', '.')
8361 const decimal = numArr[1] ? numArr[1].replaceAll('.', '').replaceAll(',', '.') : ''
8362 return parseFloat(inteiro.concat('.').concat(decimal ? decimal : '0'))
8363 }
8364
8365 /**
8366 * Compare date formatted as "YYYY-MM-DD" with the current date
8367 * Return:
8368 * -1 if dateStr < today
8369 * 0 if dateStr == today
8370 * 1 if dateStr > today
8371 */
8372 function compareDates(dateStr1, dateStr2) {
8373
8374 const convertDate = (dateStr) => {
8375 if (typeof dateStr !== 'string') throw new TypeError('dateStr must be a string with format YYYY-MM-DD');
8376 const match = dateStr.match(/^(\d{4})-(\d{2})-(\d{2})$/);
8377 if (!match) throw new Error('invalid format. Use YYYY-MM-DD');
8378 const [, yy, mm, dd] = match;
8379 return Date.UTC(Number(yy), Number(mm) - 1, Number(dd));
8380 }
8381
8382 const date1 = convertDate(dateStr1);
8383 const date2 = convertDate(dateStr2);
8384 if (date1 < date2) return -1;
8385 if (date1 > date2) return 1;
8386 return 0;
8387 }
8388
8389
8390 function possuiMensalidadeCampanha(oferta) {
8391
8392 const dataInicio = oferta.dataInicio.split('/').reverse().join('-');
8393 const precoParcelaCartoes = parseFloat(oferta.precoParcelaCartoes.replace(',','.'));
8394 const precoParcelaBoleto = parseFloat(oferta.precoParcelaBoleto.replace(',','.'));
8395
8396 if(!oferta.precoVendaMaxParcelaOferta
8397 || (oferta.precoVendaMaxParcelaOferta != 99 && precoParcelaCartoes != 99 && precoParcelaBoleto != 99 && compareDates(dataInicio, '2025-12-31') <= 0)
8398 || (oferta.precoVendaMaxParcelaOferta != 109 && precoParcelaCartoes != 109 && precoParcelaBoleto != 109 && compareDates(dataInicio, '2026-01-01') >= 0)
8399 )
8400 return false
8401
8402 if($('[name="modalidades"]').val() == 'hab.-tecnica-de-nivel-medio')
8403 return true
8404
8405 if($('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
8406 return true
8407
8408 if($('[name="modalidades"]').val() == 'qualificacao-profissional')
8409 return true
8410
8411 return false
8412 }
8413
8414 function htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) {
8415 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
8416 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
8417
8418 // Define o texto singular ou plural
8419 var textoHorario = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
8420 "Horário e dia da aula:" :
8421 "Horário e dias das aulas:";
8422
8423 const btnLocalReal = function(oferta){
8424
8425 // NOVA LÓGICA: Define o texto (Singular/Plural)
8426 var textoOndeAcontece = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
8427 "Onde a aula irá acontecer?" :
8428 "Onde as aulas vão acontecer?";
8429
8430 var btn = `<div class="container-local-realizacao ` + ((oferta.espacoExterno == 'true'|| (isHibrido && temTextoParaFormatoHibrido)) ? '' : 'd-none-btn') + (localLivreOnline(oferta.localEspacoExterno) ? ' idioma-online' : '') + `">`;
8431
8432 btn += (localLivreOnline(oferta.localEspacoExterno)) ?
8433 `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="btn-idiomas__aula-online" href="#">
8434 <i class="fas fa-wifi"></i>Aulas Online - ao vivo</a>`
8435 : `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__local-realizacao-content__title" href="#">
8436 <i class="fas fa-user"></i>` + textoOndeAcontece + `</a>`;
8437
8438 btn += `</div>`;
8439
8440 return btn;
8441
8442 }
8443
8444 // Card Oferta
8445
8446 let result = `
8447 <div class="slick-area__item card_oferta_` + index + ` codigoOferta_` + oferta.codigoOferta + ` ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
8448
8449 <div class="ssp-card-oferta-curso">
8450
8451 <div class="content-data-dias">
8452
8453 <div class="ssp-card-oferta__info-turma-iniciada" id="aviso-turma-iniciada-` + index + `" style="display:none">
8454 <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>
8455 </div>
8456
8457
8458 <div>
8459 <small class="ssp-card-oferta-curso__title-item">Período:</small>
8460 <h6 class="ssp-card-oferta-curso__item-data-periodo item-data-periodo_` + index + `">` + formataPeriodo(oferta.dataInicio, oferta.dataFim) + `</h6>
8461 </div>
8462
8463 <div class="content-horario-dias-semana">
8464
8465 <div class="horario">
8466 <small class="ssp-card-oferta-curso__title-item">` + textoHorario + `</small>
8467 </div> ` +
8468
8469 `<div class="ssp-card-oferta-curso__dia-hora_content">
8470 ` + diasSemanaHTML + `
8471 </div>
8472
8473 </div>
8474
8475 ` + btnLocalReal(oferta);
8476
8477 result = result + `
8478 </div>
8479 `
8480
8481 if(excecaoCursoGratuito(oferta)){
8482 result += montaRestanteHTMLexcecaoCursoGratuito(index,oferta);
8483 return result;
8484 }
8485
8486 //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
8487 //Adicionada a validação dos preços da oferta em 07/06/2022 - Tarefa 9498
8488 const estaSemValorOferta = oferta.botaoCompraOferta == ''
8489 || oferta.botaoCompraOferta == 'false'
8490 || !oferta.precoVendaOferta
8491 || !oferta.precoCheioOferta
8492 || !oferta.precoVendaMaxParcelaOferta
8493 || strToFloat(oferta.precoVendaOferta) == 0
8494 || strToFloat(oferta.precoCheioOferta) == 0
8495 || strToFloat(oferta.precoVendaMaxParcelaOferta) == 0
8496
8497 //Trecho inicial do Bolsa de estudo
8498 result += `<div class="content-btn-bolsa codigoOferta_` + oferta.codigoOferta + (estaSemValorOferta ? ' pb-0' : '') + `">
8499 <div class="ssp-card-oferta__info-turma-content">
8500 <h6 class="ssp-card-oferta__info-turma mb-0">Bolsas de estudo</h6>
8501 </div>
8502 <div class="codigoOferta_` + oferta.codigoOferta + ` ssp-container-botao-bolsa"></div>
8503 </div>
8504 `
8505
8506 if(estaSemValorOferta) {
8507 result = result + `
8508 <div class="content-buttons hide">
8509 </div>
8510 `
8511 return result;
8512 }
8513
8514
8515 //Trecho final do Bolsa de estudo e inclusao de botao de expansao do "Valores para compra"
8516 result += ` <div class="show-price-content codigoOferta_` + oferta.codigoOferta + `">
8517 <div class="ou-separator-desconto">Ou</div>
8518 <button type="button" class="btn-show-price">
8519 <p>Saiba mais sobre:</p>
8520 <div onclick="togglePriceCard('codigoOferta_` + oferta.codigoOferta + `')">
8521 <i class="fas fa-money-bill"></i>
8522 <span>Valores para compra</span>
8523 </div>
8524 </button>
8525 </div>
8526 `
8527
8528 result = result + `
8529 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8530 `
8531
8532 if( temDesconto && !ehCursoTrampolim ) {
8533 result = result + `
8534 <div class="ssp-card-oferta__info-turma-content">
8535 <h6 class="ssp-card-oferta__info-turma">Valores para compra</h6>
8536 </div>
8537
8538 <div class="block-valor-desconto">
8539
8540 <div class="tag-label-desconto">
8541 <small class="ssp-card-oferta-curso__title-item">Valor com </small>
8542 <span class="ssp-card-oferta-curso__valor-desconto">50% de desconto*</span>
8543 </div>
8544
8545 <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>
8546
8547 <div class="ssp-card-oferta-curso__desconto-content">
8548 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</span></p>
8549 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta)/2, 2)) + `</span></p>
8550 </div>
8551 `
8552
8553 if($('[name="tipoCurso"]').val() == 'extensao') {
8554 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>`
8555 } else {
8556 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>`
8557 }
8558
8559 result = result + `
8560 <div class="ou-separator-desconto">Ou</div>
8561
8562 <div class="block-valor-total">
8563
8564 <small class="ssp-card-oferta-curso__title-item">Valor sem desconto:</small>
8565
8566 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8567
8568 <div class="ssp-card-oferta-curso__desconto-content">
8569 <p>Valor total: <strong>R$ ` + formataValor(strToFloat(oferta.precoVendaOferta)) + `</strong></p>
8570 </div>
8571
8572 </div>
8573 `
8574 }else{
8575
8576 // itens que são diferentes entre técnico e livres comprado a extensão
8577 if($('[name="tipoCurso"]').val() == 'extensao'){
8578 result = result + `
8579
8580 <div class="block-valor-total">
8581
8582 <div class="investimento" id="container_investimento_` + index + `">
8583
8584 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8585
8586 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6>
8587
8588 <div class="ssp-card-oferta-curso__desconto-content">
8589 <p>Ou: <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span> à vista</p>
8590 </div>
8591
8592 </div>
8593
8594 </div>
8595 `
8596 } else {
8597 result = result + `
8598 <div class="block-valor-total">
8599 <div class="investimento" id="container_investimento_` + index + `">
8600 `
8601
8602 // Não mostrar mensagem de 30% de desconto em casos especificos
8603 if(temDesconto){
8604 result = result + `
8605 <small class="ssp-card-oferta-curso__title-item font-weight-bold">Valor com 30% de desconto:</small>
8606 `
8607 }
8608
8609 if(oferta.precoCheioOferta == oferta.precoVendaOferta) {
8610 result = result + `
8611 <small class="ssp-card-oferta-curso__title-item">Valor do curso:</small>
8612 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8613
8614 <div class="ssp-card-oferta-curso__desconto-content">
8615 <p>Ou <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8616 </div>
8617 </div>
8618 </div>
8619 `
8620 } else {
8621 result = result + `
8622 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8623 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8624
8625 <div class="ssp-card-oferta-curso__desconto-content">
8626 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(oferta.precoCheioOferta) + `</span></p>
8627 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8628 </div>
8629 </div>
8630 </div>
8631 `
8632 }
8633 }
8634 }
8635
8636 let dataBtnComprar = getObjBtnComprar(oferta);
8637
8638 // itens que são diferentes entre técnico e livres comprado a extensão
8639 result = result + `
8640
8641 <div class="ssp-card-oferta-curso__formas-pagamento-content" id="container_forma_pgto_` + index + `">
8642
8643 <span>Saiba mais sobre:</span>
8644
8645 <div>
8646 <i class="ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card"></i>
8647 <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>
8648 </div>
8649
8650 </div>
8651
8652 <div class="content-buttons">
8653
8654 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8655
8656 <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>
8657
8658 </div>
8659
8660 </div>
8661
8662 </div>
8663
8664 </div>
8665 `
8666
8667 return result
8668 }
8669
8670 function montaRestanteHTMLexcecaoCursoGratuito(index, oferta){
8671
8672 let dataBtnComprarExcecao = getObjBtnComprar(oferta);
8673 let resultModalidade =
8674 `
8675 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8676 <div class="ssp-card-oferta__info-turma-content">
8677 <h6 class="ssp-card-oferta__info-turma">Curso gratuito</h6>
8678 </div>
8679 <div class="block-valor-total">
8680 <div class="investimento" id="container_investimento_` + index + `">
8681 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>R$ 0,00</h6>
8682 </div>
8683 </div>
8684 <div class="content-buttons">
8685
8686 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8687
8688 <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>
8689
8690 </div>
8691
8692 </div>
8693 </div>
8694 </div>
8695 `
8696 ;
8697 return resultModalidade;
8698
8699 }
8700
8701
8702 var htmlModalLocalRealizacao = '<div id="modalLocalRealizacao_{index}" class="ssp-modal">'
8703 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao">'
8704 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__title-content">'
8705
8706 htmlModalLocalRealizacao += '{tituloLocalRealizacao}'
8707
8708 htmlModalLocalRealizacao += '<i class="ssp-card-modal-local-realizacao__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8709 htmlModalLocalRealizacao += '</div>'
8710 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__texto">'
8711 htmlModalLocalRealizacao += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8712 htmlModalLocalRealizacao += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8713 htmlModalLocalRealizacao += '<address>'
8714 htmlModalLocalRealizacao += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8715 htmlModalLocalRealizacao += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8716 htmlModalLocalRealizacao += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8717 htmlModalLocalRealizacao += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8718 htmlModalLocalRealizacao += '</address>'
8719 htmlModalLocalRealizacao += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8720 htmlModalLocalRealizacao += '<a class="btn ssp-modal-local-realizacao__btn {classeEntendi} ssp-modal-local-realizacao__btn_{index}" href="#a">Entendi</a>'
8721 htmlModalLocalRealizacao +='</div>'
8722 htmlModalLocalRealizacao +='</div>'
8723 htmlModalLocalRealizacao +='</div>'
8724 htmlModalLocalRealizacao +='</div>';
8725
8726 var htmlModalAntesCompra = '<div id="modalAntesCompra_{index}" class="ssp-modal">'
8727 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao">'
8728 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__title-content">'
8729 htmlModalAntesCompra += '<h6 class="ssp-modal-local-realizacao__title"> LEMBRETE IMPORTANTE!</h6>'
8730 htmlModalAntesCompra += '<i class="ssp-card-modal-antes-compra__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8731 htmlModalAntesCompra += '</div>'
8732 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__texto">'
8733 htmlModalAntesCompra += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8734 htmlModalAntesCompra += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8735 htmlModalAntesCompra += '<address>'
8736 htmlModalAntesCompra += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8737 htmlModalAntesCompra += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8738 htmlModalAntesCompra += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8739 htmlModalAntesCompra += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8740 htmlModalAntesCompra += '</address>'
8741 htmlModalAntesCompra += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8742 htmlModalAntesCompra += '{componentBuyConfirmation}'
8743 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>'
8744 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>'
8745 htmlModalAntesCompra +='</div>'
8746 htmlModalAntesCompra +='</div>'
8747 htmlModalAntesCompra +='</div>'
8748 htmlModalAntesCompra +='</div>';
8749
8750 var htmlSlickAreaDiasSemana = '<div class="ssp-card-oferta-curso__dia-hora-item">'
8751 htmlSlickAreaDiasSemana +='<p class="ssp-card-oferta-curso__dia-hora-item__dia">'
8752 htmlSlickAreaDiasSemana += '<span data-dia-hora="dias-semana">{diasSemana}</span>'
8753 htmlSlickAreaDiasSemana += '<span data-dia-hora="horário">{horasSemana}</span>'
8754 htmlSlickAreaDiasSemana += '</p>'
8755 htmlSlickAreaDiasSemana += '</div>';
8756
8757
8758 //Montar object push - google tag manager - 5
8759 function criaItensEcommerce(ofertas){
8760
8761 let nomeUnidadeSelecionada = objsTela.unidades[ultimaUnidade].nome
8762
8763 let dadosCurso = {
8764 //Pegar do freemarker
8765 tituloComercial : $('[name="tituloComercial"]').val(),
8766 tipoCurso : $('[name="nomeCategoriaTipoCurso"]').val(),
8767 formato : $('[name="formato"]').data("formato")
8768 }
8769
8770 let ecommerceObject = {
8771
8772 item_id: "", //codOferta - oferta,
8773 item_name: "", //Nome do curso - curso,
8774 affiliation: "", //nome da unidade - oferta,
8775 currency: "BRL", //Moeda - "BRL",
8776 discount: "", //desconto - oferta,
8777 index: "", //indice da lista - i,
8778 item_brand: "Senac SP", //"Senac SP",
8779 item_category: "", //categoria do curso - curso,
8780 item_list_id: "", //"60",
8781 item_list_name: "", //"São Carlos" - Oferta,
8782 item_variant: "", //modalidade - curso,
8783 price: "", //preco cheio - oferta,
8784 quantity: 1
8785
8786 }
8787
8788 let itensEcommerce = new Map();
8789
8790 for(var i = 0; i < ofertas.length; i++){
8791
8792 itensEcommerce.set(ofertas[i].codigoOferta, {
8793
8794 item_id: ofertas[i].codigoOferta, //codOferta - oferta,
8795 item_name: dadosCurso.tituloComercial, //Nome do curso - curso,
8796 affiliation: nomeUnidadeSelecionada, //nome da unidade - oferta,
8797 currency: "BRL", //Moeda - "BRL",
8798 discount: parseFloat(ofertas[i].precoCheioOferta - ofertas[i].precoVendaOferta).toFixed(2), //desconto - oferta,
8799 index: i, //indice da lista - i,
8800 item_brand: "Senac SP", //"Senac SP",
8801 item_category: dadosCurso.tipoCurso, //categoria do curso - curso,
8802 item_list_id: objsTela.unidades[ultimaUnidade].codigoUnidade, //"60",
8803 item_list_name: nomeUnidadeSelecionada, //"São Carlos" - Oferta,
8804 item_variant: dadosCurso.formato, //modalidade - curso,
8805 price: parseFloat(ofertas[i].precoCheioOferta).toFixed(2), //preco cheio - oferta,
8806 quantity: 1
8807
8808 }
8809 )
8810 }
8811
8812 return itensEcommerce;
8813 }
8814
8815 //EMED - ELEMENTOS DINAMICOS
8816 const htmlSlickAreaEmed = function(oferta){
8817 var btnid = 'myBtn_' + oferta.indice;
8818 const diasHorarios = function(oferta){
8819 return oferta.diasDaSemanaOferta.join(', ').toLowerCase();
8820
8821 }
8822
8823
8824 return `
8825 <div class="ssp-ofertas-emed__card codigoOferta_`+ oferta.codigoOferta + `">
8826
8827 <div class="ssp-ofertas-emed__card-info-turma">
8828
8829 <div class="item-content">
8830 <i class="fas fa-calendar-alt calendar-icon-turma"></i>
8831 <p class="title-turma">`+ oferta.titulo +`</p>
8832 <span class="text-default" data-info="info-turma">Alunos na turma: <strong>até `+ oferta.qtdeTotalVagas +`</strong></span>
8833 </div>
8834
8835 <div class="content-previsao-inicio-termino">
8836
8837 <div class="item-content">
8838 <span class="text-default">Previsão de início:</span>
8839 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataInicio,oferta.etapa,false) +`</span>
8840 </div>
8841
8842 <div class="item-divisor"></div>
8843
8844 <div class="item-content">
8845 <span class="text-default">Previsão de término:</span>
8846 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataFim,oferta.etapa,true) +`</span>
8847 </div>
8848
8849 </div>
8850
8851
8852 <div class="item-divisor"></div>
8853
8854 <div class="item-content">
8855 <span class="text-default">Dias e horários das aulas:</span>
8856 <span class="text-default-lg" style="text-transform: capitalize;">`+ diasHorarios(oferta) +`</span>
8857 <span class="text-default-lg">`+ oferta.horaInicio.replace(':', 'h') + ' às ' + oferta.horaFimOferta.replace(':', 'h') +`</span>
8858 </div>
8859
8860 </div>
8861
8862 <div class="ssp-ofertas-emed__card-info-investimento">
8863 <p class="title-investimento">Investimento anual:</p>
8864
8865 <div class="item-content-investimento">
8866 <span class="txt-parcelas">Até `+ oferta.numeroMaxParcelasOferta +`x</span>
8867 <span class="txt-valor-parcela">R$ `+ formataValor(oferta.precoVendaMaxParcelaOferta) +`</span>
8868 </div>
8869
8870 <div class="item-content-investimento">
8871 <p class="txt-boleto-cartao">(boleto bancário ou cartão de crédito)</p>
8872 </div>
8873
8874 <div class="item-content-investimento">
8875 <i class="fas fa-credit-card icon-cartao-credito"></i>
8876 <a id="`+ btnid +`" data-index="`+ oferta.indice +`" href="#" class="link-descontos-parcelamentos">Descontos e Parcelamentos</a>
8877 </div>
8878
8879 </div>
8880
8881 </div>
8882
8883 `;
8884 }
8885
8886
8887 function loadCursosVocePodeGostar(){
8888
8889 if(isEmed){
8890 var url = urlSearchCursosPodeGostarEmed
8891 .replace('\{groupId\}', groupId)
8892 .replace('\{tiposDeCurso\}',$('[name="idTipoCurso"]').val())
8893 .replace('\{limit\}', 12)
8894 .replace('\{articleId\}', $('[name="articleId"]').val());
8895 }else{
8896 var url = urlSearchCursosPodeGostar
8897 .replace('\{companyId\}',themeDisplay.getCompanyId())
8898 .replace('\{groupId\}', groupId)
8899 .replace('\{userId\}',themeDisplay.getUserId())
8900 .replace('\{articleId\}',$('[name="articleId"]').val())
8901 .replace('\{limit\}', 12);
8902 }
8903
8904
8905 $.ajax({
8906 url : url,
8907 type : 'get',
8908 beforeSend: function(){
8909 loading('#slider-curso');
8910 }
8911 })
8912 .done(function(cursos){
8913
8914 if(cursos.length > 0){
8915
8916 cursos = JSON.parse(cursos);
8917
8918 if(isEmed) cursos = cursos['cursos'];
8919
8920 if(cursos.length > 0) $('#section-cursos-voce-pode-gostar').removeClass('d-none');
8921 else {
8922 $('#section-cursos-voce-pode-gostar').addClass('d-none');
8923 return;
8924 }
8925
8926 var articles = [];
8927
8928 $.each(cursos, function(k, c){
8929 articles.push(c.articleId);
8930 });
8931
8932 //Verifica a situação dos botoes de inscrições e bolsa
8933 $.ajax({
8934 url : '/o/senac-content-services/verificaBotoesInscricaoEBolsa/'+groupId+'/'+articles.join(','),
8935 type : 'get'
8936 })
8937 .done(function(infoBotoes){
8938
8939 if(infoBotoes.length > 0) {
8940
8941 infoBotoes = JSON.parse(infoBotoes);
8942
8943 $('#slider-curso').empty();
8944
8945 $.each(cursos, function(k, c){
8946 $('#slider-curso').append(buildCardCurso(c, infoBotoes));
8947
8948 });
8949
8950 $('#slider-curso').addClass(
8951 'slick-area slick-area--md-bleed slider-container slick-area-cursos-pode-gostar');
8952
8953 sliderCurso('.slick-area-cursos-pode-gostar');
8954 }
8955 });
8956 }
8957
8958 })
8959 .fail(function(jqXHR, textStatus, msg){
8960 // alert(msg);
8961 });
8962
8963 }
8964
8965 /*
8966 * Armazena a navegação em cookies, se habilitado
8967 */
8968 $(document).on("click", ".ck-curso", function() {
8969
8970 //Verifica se o cookie está habilitado
8971 if(getCookie('portalSenacCookie') != null){
8972
8973 var articleId = $(this).data('ck');
8974 manageCookieArray('ck-cursos', articleId);
8975
8976 }
8977
8978 });
8979
8980
8981
8982
8983
8984 $(function(){
8985
8986 if($('#unidades-ofertas').find('option').length ==0){
8987
8988 $('.ssp-container-selecione-unidade').addClass('d-none')
8989
8990 }
8991
8992 });
8993
8994 function avisoNovasTurmas(){
8995
8996
8997 window.event.preventDefault()
8998
8999 //var unidadeSelecionada = $('#select-registro-interesse').val();
9000 //este select tem 2 valores separados por @ -> categoryId@codUnidade
9001 // var unidadeSelecionada = $('#unidades-ofertas').val();
9002
9003 //Código fixo quando Senac Ao Vivo
9004 var codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
9005
9006 // if(codUnidadeSelectRegInt && codUnidadeSelectRegInt.length){
9007
9008 //Se ja tiver logado , redireciona para o registro
9009 if(getCookie('ticket') == null){
9010
9011 //Abre modal login
9012 $('#modal-login').removeClass('d-none');
9013
9014 }else{
9015
9016 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
9017
9018 verificaBtnEnviarRegistroInteresseAtivo();
9019 }
9020
9021 window.onclick = function(event) {
9022 $('[id="modal-registro-interesse"]').each(function(index,_modal){
9023 if (event.target == _modal) {
9024 $('#modal-registro-interesse').addClass('d-none');
9025 $("body").removeClass("overflow-hidden")
9026 }
9027 });
9028 }
9029
9030 // }
9031 }
9032 function login(){
9033 var unidadeSelecionada
9034 var codUnidadeSelectRegInt
9035 doLogin({
9036 user: $('#login-email-modal').val(),
9037 pass: $('#login-password-modal').val(),
9038 btnLoadingSelector: '#btnLogin',
9039 before: () => {
9040 $('#mensagem-erro-login').addClass('d-none')
9041
9042 unidadeSelecionada = $('#unidades-ofertas').val();
9043 codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
9044 },
9045 done: (data) => {
9046 var loginData = JSON.parse(data);
9047
9048 if(loginData.status == 200 || loginData.status == 201){
9049 //Após logar-se, exibe o modal p/registro de interesse
9050 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
9051 verificaBtnEnviarRegistroInteresseAtivo();
9052 //esconde o modal de login
9053 $('#modal-login').addClass('d-none');
9054 }
9055 },
9056 errorMessageSelector: '#mensagem-erro-login',
9057 error: (err) => console.error(err)
9058 })
9059 }
9060
9061 function registroSelecionaTodosDias(){
9062
9063 if($(this).hasClass('ssp-week-day-active')){
9064 $(this).removeClass('ssp-week-day-active')
9065 $('.ssp-week-day').removeClass('ssp-week-day-active')
9066 }else{
9067 $(this).addClass('ssp-week-day-active')
9068 $('.ssp-week-day').addClass('ssp-week-day-active')
9069 }
9070
9071 verificaBtnEnviarRegistroInteresseAtivo();
9072 }
9073
9074 function registroSelecionaTodosPeriodos(){
9075
9076 if($(this).is(':checked')){
9077 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', true);
9078 }else{
9079 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', false);
9080 }
9081
9082 verificaBtnEnviarRegistroInteresseAtivo();
9083 }
9084 $('.turmas-registro-interesse input[type=checkbox]').on('click', function() {
9085 var $selecionado = $(this);
9086 if ($selecionado.is(":checked")) {
9087 $('.turmas-registro-interesse input[type=checkbox]').prop("checked", false);
9088 $selecionado.prop("checked", true);
9089 } else {
9090 $selecionado.prop("checked", false);
9091 }
9092});
9093 function enviarRegistroInteresse(){
9094
9095 const codigoUsr = getCookie('codigo');
9096
9097 if(codigoUsr == null){
9098 //Sem o cookie refaz o login
9099 $('#modal-registro-interesse').addClass('d-none');
9100 $('body').removeClass('overflow-hidden');
9101 $('#modal-login').removeClass('d-none');
9102 return;
9103 }
9104
9105 var codigoFT = $('[name="codigoFT"]').val();
9106
9107 var unidades = new Set();
9108
9109 var diasSemana = '';
9110
9111 //Senac ao vivo nao tem opçao de dias da semana nem unidades
9112 if(isAoVivo){
9113 unidades.add(codUnidadeSenacAoVivo);
9114 }else{
9115 $.each($('.ssp-week-day').not('#todosDias'), function(k, v){
9116 if($(this).hasClass('ssp-week-day-active')){
9117 diasSemana += $(this).text()+',';
9118 }
9119 });
9120
9121 if(diasSemana.length > 0) diasSemana = diasSemana.slice(0, -1);
9122
9123 $.each($('.ssp-card-registro-interesse__select'), function(k,item){
9124
9125 unidades.add(item.value);
9126 });
9127 }
9128
9129
9130 var periodos = '';
9131
9132 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
9133 if($(this).is(':checked')){
9134 periodos += $(this).val()+',';
9135 }
9136 });
9137
9138 var turmas = '';
9139
9140 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k, v) {
9141 if ($(this).is(':checked')) {
9142 turmas += $(this).val() + ',';
9143 }
9144 });
9145
9146 if (periodos.length > 0) periodos = periodos.slice(0, -1);
9147 if (turmas.length > 0) turmas = turmas.slice(0, -1);
9148
9149 var usuarioNotificado = false;
9150
9151 loadingSubmitButton('#enviar-registro-interesse-btn');
9152
9153 unidades.forEach(function(codigoUnidade) {
9154 var data = {
9155 codigoFT: codigoFT,
9156 codigo: codigoUsr,
9157 diasSemana: diasSemana,
9158 periodos: periodos,
9159 turmas, turmas,
9160 codigoUnidade: codigoUnidade,
9161 interesseBolsa: 'N',
9162 isEmed: isEmed ? 'S' : 'N'
9163 };
9164
9165 const url = urlRegistroInteresse;
9166
9167 $.ajax({
9168 url: url,
9169 method: 'POST',
9170 data: JSON.stringify(data),
9171 headers: {
9172 'Accept': 'application/json',
9173 'Content-Type': 'application/json'
9174 },
9175 }).done(
9176 function(retornoData) {
9177
9178 var retornoData = JSON.stringify(retornoData);
9179
9180 if (retornoData.length > 0) {
9181
9182 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
9183
9184 var retorno = JSON.parse(retornoData);
9185
9186 if (retorno.status == 200 || retorno.status == 201) {
9187
9188 //Evita que o usuário recebe um email para cada unidade de interesse
9189 if(usuarioNotificado) return;
9190
9191 //Mensagem de sucesso registro interesse
9192 $('#modal-registro-interesse-sucesso').removeClass('d-none');
9193
9194 var prefixUrl = themeDisplay.getLayoutRelativeURL();
9195
9196 if (prefixUrl.indexOf('staging/') > 1)
9197 prefixUrl = prefixUrl.substring(0, prefixUrl.lastIndexOf('staging/') + 8);
9198 else
9199 prefixUrl = HOST;
9200
9201 $('#btn-voltar-home').attr('href', prefixUrl);
9202
9203 //Busca os dados do nome do usuário logado
9204 var username = getCookie('name').split(' ')[0];
9205
9206 //Prioridade para nomeSocial
9207 if (getCookie('nome_social') != null) {
9208 var nomeSocial = getCookie('nome_social').replace(/['"]+/g, '');
9209
9210 if (nomeSocial.length > 0) username = getCookie('nome_social');
9211
9212 }
9213
9214 username = username.replace(/['"]+/g, '');
9215
9216 var unidadesSel = getUnidadesSelecionadasRI();
9217
9218 //Disara um email para o usuário interessado
9219 var data = {
9220 emailInteressado: getCookie('email'),
9221 nomeInteressado: username,
9222 tituloCurso: $('.ssp-card-detalhe-curso__title').text(),
9223 unidades: unidadesSel.unidades,
9224 unidadesPrefix: unidadesSel.unidadesPrefix
9225 };
9226
9227 $.ajax({
9228 url: urlRegistroInteresseEmailInteressado,
9229 method: 'POST',
9230 data: JSON.stringify(data),
9231 headers: {
9232 'Accept': 'application/json',
9233 'Content-Type': 'application/json'
9234 },
9235 }).done(function(retornoData) {});
9236
9237 usuarioNotificado = true;
9238
9239 window.onclick = function(event) {
9240 $('[id="modal-registro-interesse-sucesso"]').each(function(index, _modal) {
9241 if (event.target == _modal){
9242 $('#modal-registro-interesse-sucesso').addClass('d-none');
9243 $('#modal-registro-interesse').addClass('d-none');
9244 $("body").removeClass("overflow-hidden");
9245 }
9246 });
9247 }
9248
9249 } else {
9250 //Mensagem de erro registro interesse
9251 $('#modal-registro-interesse-erro').removeClass('d-none');
9252 }
9253 } else {
9254 //Mensagem de erro registro interesse
9255 $('#modal-registro-interesse-erro').removeClass('d-none');
9256 }
9257 }).fail(function(){
9258 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
9259 $('#modal-registro-interesse-erro').removeClass('d-none');
9260 });
9261 });
9262 }
9263
9264 function verificaBtnEnviarRegistroInteresseAtivo(){
9265
9266 var diasSemanaSelecionado = false;
9267 var periodoSelecionado = false;
9268 var turmaSelecionada = false;
9269 var politicaPrivacidadeSelecionado = false;
9270
9271
9272 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
9273 if($(this).is(':checked'))
9274 periodoSelecionado = true;
9275 });
9276
9277 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
9278 if($(this).is(':checked'))
9279 turmaSelecionada = true;
9280 });
9281
9282 if($('#check-politica-privacidade').is(':checked')) politicaPrivacidadeSelecionado = true;
9283
9284 var ativo = true
9285
9286 //Caso tenha algum dos selects de unidade sem uma opção válida selecionada
9287 if(!isAoVivo)
9288 ativo = ativo && !Array.from($('.ssp-card-registro-interesse__select.unidades')).filter(sel => !$(sel).val()).length
9289
9290 ativo = ativo && periodoSelecionado && politicaPrivacidadeSelecionado;
9291
9292 if(!isAoVivo && !isEmed){
9293
9294 $.each($('.ssp-week-day').not('#todosDias'), function(k, v){
9295 if($(this).hasClass('ssp-week-day-active'))
9296 diasSemanaSelecionado = true;
9297 });
9298 ativo = ativo && diasSemanaSelecionado;
9299
9300 }
9301
9302 if(isEmed)
9303 ativo = ativo && turmaSelecionada;
9304
9305 if(ativo)
9306 $('#enviar-registro-interesse-btn').attr("disabled", false);
9307 else
9308 $('#enviar-registro-interesse-btn').attr("disabled", true);
9309 }
9310
9311 function loadPlanoCurso(){
9312
9313 const urlGetPlanoCurso = urlPlanoCurso
9314
9315 .replace('\{codigoFT\}', $('[name="codigoFT"]').val())
9316 .replace('\{dataEfetiva\}', $('[name="dataEfetivaSTR"]').val());
9317
9318 $.ajax({
9319 url:urlGetPlanoCurso,
9320 method:'get',
9321 crossDomain: true,
9322 dataType: 'html',
9323 success: function( data ) {
9324
9325
9326 //Atualiza o link com o plano de curso do servi¿o (ja retorna o texto)
9327 $('#plano-curso').append('<br/>'+data);
9328 },
9329 error: function(data){
9330
9331 console.log('Não existe a URL do plano de curso');
9332
9333 }
9334
9335 });
9336 }
9337
9338 function checkCursoTrampolim(){
9339 return $('[name="codigoFT"]').val() == "24493";
9340 }
9341
9342 /*function verificaOfertaValida(oferta){
9343
9344 if(oferta['precoCheioOferta'] == '' || oferta['precoVendaOferta'] == '' || oferta['numeroMaxParcelasOferta'] == '' || oferta['precoVendaMaxParcelaOferta'] == '')
9345 return false;
9346
9347 var atual = new Date();
9348
9349 var dataOfertaPartes = oferta['dataInicio'].split('/');
9350
9351 var dataOferta = new Date(dataOfertaPartes[2], dataOfertaPartes[1] - 1, dataOfertaPartes[0]);
9352
9353 var dataLimiteMatriculaOfertaPartes = "";
9354 var dataLimiteMatriculaOferta = "";
9355
9356 if(oferta['dtLimiteMatricula'] != ""){
9357 dataLimiteMatriculaOfertaPartes = oferta['dtLimiteMatricula'].split('-');
9358 dataLimiteMatriculaOferta = new Date(dataLimiteMatriculaOfertaPartes[0], dataLimiteMatriculaOfertaPartes[1] - 1, dataLimiteMatriculaOfertaPartes[2] ,atual.getHours(),atual.getMinutes(),atual.getSeconds(),atual.getMilliseconds());
9359
9360 }
9361
9362
9363 //Só deve aparecer ofertas D-1 . Se ela iniciou, aparece se o campo dtLimiteMatr estiver preenchido e com data até o dia de hoje
9364 if(dataOferta <= atual)
9365 if(dataLimiteMatriculaOferta == "" || (dataLimiteMatriculaOferta != "" && atual.getTime() > dataLimiteMatriculaOferta.getTime()))
9366 return false;
9367
9368 return true;
9369 }*/
9370
9371
9372 function loadServerDate(){
9373
9374 $.ajax({
9375 url:urlGetServerT,
9376 method:'get',
9377 dataType: 'json',
9378 cache: 'false',
9379 headers: {
9380 'Cache-Control': 'no-store, no-cache, max-age=0',
9381 'Expires': '0',
9382 'Pragma': 'no-cache'
9383 },
9384 success: function( data ) {
9385 todayG = new Date(data.year,(data.month - 1),data.day,(data.hour),data.minutes,data.seconds);
9386 startTimer();
9387 }
9388 });
9389
9390 }
9391
9392 function handleVisibilityChange() {
9393
9394 if (!document[hidden] ){
9395 restartTimer();
9396 }
9397
9398 }
9399
9400 function restartTimer(){
9401
9402 if(restartTimeout == null){
9403 loadServerDate();
9404 restartTimeout = setTimeout(function(){
9405 restartTimeout = null;
9406 }, 5000);
9407 }
9408
9409 }
9410
9411 function startTimer(){
9412
9413 var mSeconds = todayG.getTime();
9414 if(interval01 != null){
9415 clearInterval(interval01);
9416 }
9417 interval01 = setInterval(function(){
9418 todayG.setTime(todayG.getTime() + 1000);
9419 }, 1000);
9420
9421 if(interval15 != null){
9422 clearInterval(interval15);
9423 }
9424 interval15 = setInterval(function(){
9425 mSeconds = mSeconds + 15000;
9426 todayG.setTime(mSeconds);
9427 }, 15000);
9428
9429 }
9430
9431 function checkIsAoVivo(){
9432 isAoVivo = $("input[name='formato']").attr("data-formato") == nomeFormatoAoVivoDxp;
9433 }
9434
9435
9436 //Ao clicar na setinha next do slider, busca dinamicamente uma proxima oferta
9437 function buscaProximaOferta(){
9438 //Zera variável que controla existência de ofertas com bolsa
9439 //ofertasComBolsa = false;
9440
9441 //Verificamos se a ultima oferta já foi exibida, para evitar de fazer novas buscas
9442 if(carregouUltimaOferta)
9443 return;
9444
9445 //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.
9446 var totalOfertasSlick = $('#turmas-container .slick-area__item').length;
9447 //Pegamos o índice da oferta do meio (central)
9448 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
9449
9450 var totalOfertasADireita = totalOfertasSlick - currentSliderIndex;
9451
9452 //Se o total de ofertas à direita for maior a 2 não precisa realizar a busca
9453 if(totalOfertasADireita > 2)
9454 return;
9455
9456 startOfertaParam = endOfertaParam;
9457 endOfertaParam += 16;
9458
9459 const codigoFT = $('[name="codigoFT"]').val();
9460 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
9461
9462 var unidadeCategoryId = '';
9463 var unidadeCodigoSelect = '';
9464
9465 if(isAoVivo){
9466
9467 $.each(objsTela.unidades, function(k,unidade){
9468 unidadeCategoryId += unidade['categoryId']+',';
9469 });
9470
9471 //tirando ultima virgula
9472 unidadeCategoryId = unidadeCategoryId.substring(0,unidadeCategoryId.length - 1);
9473
9474 }else{
9475 var splitted = $('#unidades-ofertas').val().split("@");
9476 unidadeCategoryId = splitted[0];
9477 unidadeCodigoSelect = splitted[1];
9478 }
9479
9480 var params = new URLSearchParams();
9481 params.set('codigoFTOferta',codigoFT)
9482 params.set('dataEfetivaOferta',dataEfetivaOferta)
9483 params.set('categoryIds',unidadeCategoryId)
9484 params.set('start',startOfertaParam)
9485 params.set('end',endOfertaParam)
9486 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
9487 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
9488 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
9489
9490 if($('#chkBolsa').prop('checked')){
9491 params.set('considerarDataBolsaFutura', true)
9492 }
9493
9494 const url = urlSearchOferta + '?' + params.toString()
9495
9496 $.ajax({
9497 url:url,
9498 method:'get',
9499 dataType:'json'
9500 }).done(
9501 function(data){
9502
9503 if(data.length > 0){
9504 var indiceOferta = startOfertaParam;
9505
9506 for (var index = 0; index < data.length; index++) {
9507
9508 var ofertaJSON = data[index];
9509 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
9510
9511 //Verificamos se a oferta buscada já existe na tela (que ocorre quando chega na última oferta)
9512 if($('.codigoOferta_'+oferta.codigoOferta).length > 0){
9513 console.log('Ja tem a oferta '+oferta.codigoOferta);
9514 carregouUltimaOferta = true;
9515 break;
9516 }
9517
9518 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
9519 ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
9520
9521 ofertasMap.set(oferta.codigoOferta, oferta);
9522
9523 if(isAoVivo)
9524 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
9525
9526 //O indice é igual ao ultimo elemento buscado - 1
9527 var i = indiceOferta;
9528 oferta['indice'] = i;
9529
9530 if(isAoVivo)
9531 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
9532 else codigoUnidade = unidadeCodigoSelect;
9533
9534
9535 montaHTMLOferta(oferta, i, codigoUnidade, true);
9536 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
9537
9538 montaHTMLModalLocalRealizacao(oferta, i);
9539 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
9540 verificaBotaoBolsaSS(oferta);
9541 verificaCursoAprendizagem(i);
9542 verificaCursoTrampolim(i);
9543
9544 associaEventoBtnFormaPagamento(i);
9545 associaEventoBtnComprar(i);
9546 associaEventoBtnComprarDentroFormaPgto(i);
9547 associaEventoBtnLocalRealizacao(i);
9548 associaEventosFecharModal(i);
9549
9550 if($('[name="tipoCurso"]').val() == 'extensao'){
9551 associaEventoBtnConheca(i);
9552 associaEventoBtnComprarConhecaDescontoOk(i);
9553 associaEventoBtnComprarConhecaDescontoNot(i);
9554 associaEventoBtnAlunoNao(i);
9555 associaEventoBtnAlunoSim(i);
9556
9557 }
9558
9559 indiceOferta++;
9560 }
9561
9562 controlaPaginaBolsa();
9563 }
9564 }
9565 );
9566
9567 }
9568
9569 function setUrlParam(key, value) {
9570 const url = new URL(window.location.href)
9571
9572 if(value)
9573 url.searchParams.set(key, value);
9574 else
9575 url.searchParams.delete(key);
9576
9577 window.history.pushState({}, '', url.toString())
9578 }
9579
9580 function selectFilter(paramkey, el) {
9581 setUrlParam(paramkey, el.prop("checked"))
9582 const currentUnidadeFriendlyURLSelected = $('#unidades-ofertas').find('option').filter(':selected').attr('data-unidade-friendly-url')
9583 loadUnidades(!isAoVivo, $('[data-unidade-friendly-url="' + currentUnidadeFriendlyURLSelected + '"]').val())
9584
9585 if($('#chkInscricao').prop("checked") || $('#chkBolsa').prop("checked")) $('#msgFiltroAplicado').show()
9586 else $('#msgFiltroAplicado').hide()
9587 }
9588
9589 function defineCurrentUrl(ev) {
9590 const currentUnidadeFriendlyURLSelected = $(ev.target).find('option').filter(':selected').attr('data-unidade-friendly-url')
9591
9592 const hasPathWeb = window.location.pathname.includes('/web')
9593 const hasPathGuest = window.location.pathname.includes('/guest')
9594
9595 let currentPath = window.location.pathname
9596 currentPath = hasPathWeb ? currentPath.substring(4) : currentPath
9597 currentPath = hasPathGuest ? currentPath.substring(6) : currentPath
9598
9599 objsTela.unidadesRegistroInteresse.forEach(unidade => currentPath = currentPath.replace('/' + unidade.friendlyURL, ''))
9600
9601 currentPath = (currentUnidadeFriendlyURLSelected ? '/' + currentUnidadeFriendlyURLSelected : '') + currentPath
9602 currentPath = hasPathGuest ? '/guest' + currentPath : currentPath
9603 currentPath = hasPathWeb ? '/web' + currentPath : currentPath
9604
9605 if(keepURL())
9606 window.history.replaceState(window.history.state, '', currentPath + window.location.search)
9607 }
9608
9609 let isKeepURL = true
9610 /** Verifica se é para manter a URL atual. Isso deve acontecer somente ao iniciar a página #9674 */
9611 function keepURL() {
9612 const aux = isKeepURL
9613 isKeepURL = false
9614 return !aux
9615 }
9616
9617 loadServerDate();
9618 $(document).ready(function(){
9619
9620 if("${normalizedCategoryName}" == "graduacao" || "${normalizedCategoryName}" == "pos-graduacao"){
9621 document.location.href = '/erro-404'
9622 }
9623
9624 ehCursoTrampolim = checkCursoTrampolim();
9625 checkIsAoVivo();
9626 loadPlanoCurso();
9627 loadCursosVocePodeGostar();
9628
9629 if(!isAoVivo) {
9630 $('#unidades-ofertas').change(ev => {
9631 mudarUnidade(ev)
9632 defineCurrentUrl(ev)
9633 });
9634 }
9635
9636 const urlParams = new URLSearchParams(window.location.search)
9637 $('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true')
9638 $('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')) )
9639
9640 if($('#chkBolsa').length) {
9641 $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true')
9642 $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')) )
9643 loadUnidades(!isAoVivo);
9644 } else {
9645 selectFilter('bolsa', $('#chkBolsa'))
9646 }
9647
9648 //Função para Montar breadcrumb Mobile
9649
9650 function breadcrumbMobile(){
9651
9652 const linkEl = $('.ssp-card-detalhe-curso__secunday-info-back-link');
9653
9654 if ( $.trim(linkEl.html()) === 'Técnico'){
9655
9656 linkEl.attr("href", "/cursos-tecnicos");
9657
9658 } else if ( $.trim(linkEl.html()) === 'Livre'){
9659
9660 if(isAoVivo){
9661 linkEl.html('Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo')
9662 linkEl.attr("href", "/cursos-livres-senac-online-ao-vivo");
9663 }else{
9664 linkEl.attr("href", "/cursos-livres");
9665 }
9666 } else if ( $.trim(linkEl.html()) === 'Aprendizagem'){
9667
9668 linkEl.attr("href", "/jovem-aprendiz");
9669
9670 }else if ( $.trim(linkEl.html()) === 'Extensão Universitária'){
9671
9672 linkEl.attr("href", "/extensao-universitaria");
9673
9674 }else if ( $.trim(linkEl.html()) === 'Ensino Médio Técnico'){
9675
9676 linkEl.attr("href", "/ensino-medio-tecnico");
9677 }
9678
9679 }
9680
9681 breadcrumbMobile()
9682
9683 //Esconde elementos quando o curso é aprendizagem
9684 if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){
9685 $('.ssp-section-novas-turmas').remove();
9686 $("div[class^='botoes-oferta-container_']").remove();
9687 }
9688
9689 //retira os itens de dentro do container
9690 $('.bg-').css('background-color','#e4e4e4')
9691 $('.container.py-3').removeClass('container py-3')
9692 //ajuste para versao 7.4
9693 $('.lfr-layout-structure-item-container.container-fluid.container-fluid-max-xl').removeClass()
9694
9695
9696 //Fecha modal registro de interesse
9697
9698 $('#btn-close-Modal-registro-interesse').click(function(){
9699
9700 $('#modal-registro-interesse').addClass('d-none')
9701 $("body").removeClass("overflow-hidden")
9702
9703 })
9704
9705 $( "#modal-registro-interesse" ).click( function(event) {
9706
9707 if(event.target.id==$('#modal-registro-interesse')[0].id){
9708 $(this).addClass('d-none')
9709 }
9710
9711 });
9712
9713
9714 //Aviso sobre interesse em turmas
9715 $('.ssp-card-registro-interesse').on('click', '#enviar-registro-interesse-btn', enviarRegistroInteresse);
9716 if(!isEmed){
9717 $('.ssp-aviso-novas-turmas__content').on('click', '#btn-aviso-novas-turmas', avisoNovasTurmas);
9718 $('.ssp-card-registro-interesse').on('click', '#todosDias', registroSelecionaTodosDias);
9719 } else {
9720 $('.ssp-emed__card-slider-body').on('click', '#btnOptin', avisoNovasTurmas)
9721 }
9722 $('#div-campo-todos').on('change', 'input[type=checkbox]', registroSelecionaTodosPeriodos);
9723
9724 $('#btnLogin').click(function(){
9725
9726 login()
9727
9728 });
9729
9730 $('#btn-close-loginModal').click(function(){
9731 $('#modal-login').addClass('d-none')
9732 });
9733
9734 $('.ssp-week-day').not('#todosDias').click(function(){
9735
9736 $(this).toggleClass('ssp-week-day-active');
9737 verificaBtnEnviarRegistroInteresseAtivo();
9738
9739 });
9740
9741 $('#add-unidade-regsitro-interesse').click(function(e){
9742 var element = $('.ssp-card-registro-interesse__select.unidades').first().clone();
9743 element.empty();
9744 element.append('<option value="" disabled selected>Selecione uma unidade</option>')
9745 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9746
9747 if(!unidade['selecionado']){
9748 element.append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
9749 }
9750
9751 });
9752 element.change(changeSelectUnidades)
9753
9754
9755 element.css('margin-top', '10px');
9756
9757 if(element.find("option").length > 1 && $('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){
9758 element.attr("id", "select_" + cntSelectUnidades++)
9759 $('#select-unidades-registro-interesse').append(element);
9760 }
9761
9762 if($('.ssp-card-registro-interesse__select.unidades').length == objsTela.unidadesRegistroInteresse.length){
9763 $('#add-unidade-regsitro-interesse').addClass("d-none")
9764 }
9765
9766 verificaBtnEnviarRegistroInteresseAtivo();
9767 });
9768
9769 $('#remove-unidade-regsitro-interesse').click(function(e){
9770
9771 if($('.ssp-card-registro-interesse__select').length > 1){
9772
9773 var element = $('.ssp-card-registro-interesse__select').last();
9774
9775 var valueSelecionado = element.val();
9776
9777 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9778
9779 if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){
9780 unidade['selecionado'] = false;
9781 unidade['selectSelecionado'] = "";
9782 }
9783
9784 });
9785 element.val("");
9786 cntSelectUnidades--;
9787 element.change()
9788
9789 element.remove();
9790 }
9791
9792 if($('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){
9793 $('#add-unidade-regsitro-interesse').removeClass("d-none")
9794 }
9795
9796 verificaBtnEnviarRegistroInteresseAtivo();
9797 })
9798
9799 $('.ssp-card-registro-interesse__check-item').on('change', 'input[type=checkbox]', function(){
9800 verificaBtnEnviarRegistroInteresseAtivo();
9801 });
9802
9803 //Contador em ofertas de bolsas proximas
9804 var cancel = setInterval(atualizaTempoAberturasBolsas, 1000);
9805
9806 // Manipua o breadcrumb para as regras do Senac
9807
9808 if($('ol.breadcrumb').find('li:first').text().trim() == "Cursos Pai")
9809 $('ol.breadcrumb').find('li:first').remove();
9810
9811 var li = $('ol.breadcrumb').find('li:first');
9812
9813 if(li.text().trim() == 'Cursos'){
9814
9815 var primeiro = li.clone();
9816 primeiro.html(htmlBreadcrumb('/', 'Cursos', 'Home'));
9817 li.parent().prepend(primeiro);
9818
9819 var tipoCurso = $('.ssp-header-curso__tag-formato').text().trim();
9820 var tipoBreadcrumb = '';
9821
9822 const isPresencialEad = (tipoCurso.toLowerCase().includes("presencial + ead"))
9823
9824 if(tipoCurso.includes("Cursos Livres")){
9825 if(isPresencialEad) {
9826 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-livres', tipoCurso);
9827 } else {
9828 tipoBreadcrumb = htmlBreadcrumb(
9829 isAoVivo ? '/cursos-livres-senac-online-ao-vivo' : '/cursos-livres',
9830 isAoVivo ? nomeFormatoAoVivoDxp : tipoCurso);
9831 }
9832 }else if(tipoCurso.includes("Extensão")){
9833 if(isPresencialEad) {
9834 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#extensao-universitaria', tipoCurso);
9835 } else {
9836 tipoBreadcrumb = htmlBreadcrumb('/extensao-universitaria', tipoCurso);
9837 }
9838 }else if(tipoCurso.includes("Ensino Médio Técnico")){
9839 if(isPresencialEad) {
9840 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#ensino-medio-tecnico', tipoCurso);
9841 } else {
9842 tipoBreadcrumb = htmlBreadcrumb('/ensino-medio-tecnico', tipoCurso);
9843 }
9844 }else if(tipoCurso.includes("Jovem Aprendiz")){
9845 if(isPresencialEad) {
9846 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#jovem-aprendiz', tipoCurso);
9847 } else {
9848 tipoBreadcrumb = htmlBreadcrumb('/jovem-aprendiz', tipoCurso);
9849 }
9850 }else{
9851 if(isPresencialEad) {
9852 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-tecnicos', tipoCurso);
9853 } else {
9854 tipoBreadcrumb = htmlBreadcrumb('/cursos-tecnicos', tipoCurso);
9855 }
9856 }
9857
9858 li.html(tipoBreadcrumb);
9859
9860 if($('ol.breadcrumb').find('li').length == 4) $('ol.breadcrumb').find('li:last').remove();
9861
9862 }
9863
9864 $('#turmas-container').on('click', 'a.slick-next', function(e){
9865
9866 e.preventDefault();
9867 buscaProximaOferta();
9868
9869 });
9870
9871 $('#turmas-container').on('click', 'button.slick-dots', function(){
9872
9873
9874
9875 });
9876
9877 $(".next-mobile").on("click",function(e){
9878 e.preventDefault();
9879
9880 acoesMobileSliderOfertas("left");
9881 });
9882
9883 $(".prev-mobile").on("click",function(e){
9884 e.preventDefault();
9885
9886 acoesMobileSliderOfertas("right");
9887 });
9888
9889 //ação de drag do card de ofertas no mobile
9890 $('.oferta-slick-area').on('swipe', function(event, slick, direction){
9891 acoesMobileSliderOfertas(direction);
9892 });
9893
9894 loadAlternadores()
9895 let modalFormAprendizagem = document.querySelector('[data-modal="modal"]')
9896 if(modalFormAprendizagem){
9897 // Create dinamic close buttom form
9898 let btnCloseModalForm = document.querySelector('[data-modal="close-form-modal"]')
9899
9900 btnCloseModalForm.addEventListener('click',closeModalFormAprendizagem)
9901
9902 }
9903
9904 $(".oferta-slick-area").on("click", ".btnModalAprendizagem", function (){
9905 openModalFormAprendizagem();
9906 })
9907
9908 });
9909
9910 function htmlBreadcrumb(link, title, display){
9911
9912 return '<a class="breadcrumb-link" href="'+link+'" title="'+title+'"><span class="breadcrumb-text-truncate">'+(display || title)+'</span></a>';
9913
9914 }
9915
9916 function acoesMobileSliderOfertas(direcao){
9917
9918 if(direcao == "right"){
9919 $("a.slick-prev").click();
9920
9921 if($('.slick-current').attr('data-slick-index') == "0")
9922 $('.prev-mobile').addClass('nextPrevOpacity');
9923
9924 if($(".next-mobile").hasClass('nextPrevOpacity'))
9925 $('.next-mobile').removeClass('nextPrevOpacity');
9926 }
9927
9928
9929 if(direcao == "left"){
9930 $("a.slick-next").click();
9931
9932 if($(".prev-mobile").hasClass('nextPrevOpacity'))
9933 $('.prev-mobile').removeClass('nextPrevOpacity');
9934
9935 if(carregouUltimaOferta){
9936 var totalCardOfertas = $('#turmas-container .slick-area__item').length;
9937 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
9938
9939 //o card do meio é o último
9940 if(totalCardOfertas == (currentSliderIndex + 1))
9941 $('.next-mobile').addClass('nextPrevOpacity');
9942 }
9943 }
9944 }
9945
9946 //habilitar/desabilitar registro de interesse
9947 function habilitarRegistroInteresse(habilitar){
9948 var sectionRI = $('#section-registro-interesse')
9949
9950 if(isEmed) {
9951 sectionRI.hide()
9952 return;
9953 }
9954
9955 //Redmine #9309 - sempre irá mostrar
9956 habilitar = true
9957
9958 if(habilitar) sectionRI.show()
9959 else sectionRI.hide()
9960 }
9961
9962 function abrirModalRegistroInteresse(codUnidadeSelect){
9963 $('#modal-registro-interesse').removeClass('d-none');
9964 $("body").addClass("overflow-hidden")
9965 if(!isEmed){
9966 $('.ssp-card-registro-interesse__nome-curso').text($('.ssp-card-detalhe-curso__title').text());
9967 } else {
9968 $(".transferencia-emed-link").find('a').attr("href", "/ensino-medio-tecnico#onde-estudar")
9969 $('.ssp-card-registro-interesse__title-modal').text($('.ssp-card-detalhe-curso__title').text());
9970 }
9971
9972 $('.ssp-card-registro-interesse__select:not(#select_0)').remove();
9973 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9974 if(unidade['codigoUnidade'] == codUnidadeSelect){
9975 unidade['selecionado'] = true;
9976 unidade['selectSelecionado'] = 'select_0';
9977 } else {
9978 unidade['selecionado'] = false;
9979 unidade['selectSelecionado'] = "";
9980 }
9981
9982 });
9983 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9984 return ordenar(a, b, 'nome');
9985 });
9986
9987 $('#select_0').empty();
9988 $('#select_0').append('<option value="" disabled>Selecione uma unidade</option>')
9989 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9990
9991 $('#select_0').append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>');
9992
9993 });
9994 $('#select_0').val(codUnidadeSelect);
9995
9996 if(isAoVivo){
9997 $('#unidades-registro-interesse, #dias-registro-interesse').addClass('d-none');
9998 }
9999 if(objsTela.unidadesRegistroInteresse.length > 1) {
10000 $('#add-unidade-regsitro-interesse').removeClass("d-none")
10001 $('#add-unidade-regsitro-interesse').show()
10002 $('#remove-unidade-regsitro-interesse').show()
10003 } else {
10004 $('#add-unidade-regsitro-interesse').hide()
10005 $('#remove-unidade-regsitro-interesse').hide()
10006 }
10007 }
10008
10009 $('.ssp-card-registro-interesse__select.unidades').on('change', changeSelectUnidades)
10010
10011 function changeSelectUnidades() {
10012 var codUnidadeSelecionada = $(this).val();
10013 var idSelectSelecionado = $(this).attr('id')
10014 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
10015 if(unidade['codigoUnidade'] == codUnidadeSelecionada){
10016 unidade['selecionado'] = true;
10017 unidade['selectSelecionado'] = idSelectSelecionado;
10018 } else if(unidade['selectSelecionado'] == idSelectSelecionado && unidade['selecionado']){
10019 unidade['selecionado'] = false;
10020 unidade['selectSelecionado'] = "";
10021 }
10022
10023 });
10024
10025 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
10026 return ordenar(a, b, 'nome');
10027 });
10028
10029 $('.ssp-card-registro-interesse__select.unidades:not(#'+idSelectSelecionado+')').each(function() {
10030 var valueSelecionado = $(this).val();
10031 var idActualSelect = $(this).attr('id');
10032 $(this).empty();
10033 $(this).append('<option value="" disabled>Selecione uma unidade</option>')
10034 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
10035
10036 if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){
10037 $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>');
10038 }else if(!unidade['selecionado']){
10039 $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
10040 }
10041
10042 });
10043 $(this).val(valueSelecionado)
10044 });
10045
10046 verificaBtnEnviarRegistroInteresseAtivo();
10047 }
10048
10049
10050 function ordenar(objA, objB, nomeAtributo){
10051 let a = (nomeAtributo) ? objA[nomeAtributo] : objA;
10052 let b = (nomeAtributo) ? objB[nomeAtributo] : objB;
10053
10054 return a.toString().localeCompare(b.toString());
10055 }
10056
10057 function paramOrdem(xml){
10058 if(isEmed){
10059 var ordemPeriodo = ['MA', 'TA', 'NO'];
10060 return $.inArray(xml.find('[name="periodoDiaOferta"]').text().trim(), ordemPeriodo);
10061 }else{
10062 return xml.find('[name="dataInicioOferta"]').text();
10063 }
10064 }
10065
10066 function getEtapaSelecionadaEmed(){
10067 var btnEtapa = $('.ssp-ofertas-emed__filtro-content .btn--filtro-ativo');
10068 if(!btnEtapa) return '';
10069 return btnEtapa.val();
10070 }
10071
10072 function filtraOfertasEtapa(etapa, ofertas){
10073 if(!etapa) return [];
10074 var ofertasEtapa = [];
10075 var turmas = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
10076 var periodos = {['MA'] : 'Manhã', ['TA'] : 'Tarde', ['NO'] : 'Noite'};
10077 var ultimoPeriodo = null, indexPeriodo;
10078 ofertas = ofertas.sort(function(a, b){
10079 return ordenar(a, b, 'periodoDiaOferta');
10080 });
10081
10082 $.each(ofertas, async (index, oferta)=> {
10083 if(oferta['etapa'] == etapa){
10084 if(oferta['periodoDiaOferta'] != ultimoPeriodo) indexPeriodo = 0;
10085 ultimoPeriodo = oferta['periodoDiaOferta'];
10086 oferta['titulo'] = 'Turma ' + turmas[indexPeriodo++] + ' - ' + (periodos[ultimoPeriodo] || '');
10087 ofertasEtapa.push(oferta);
10088 }
10089 });
10090
10091 return ofertasEtapa;
10092 }
10093
10094 function formatarDataEmed(data, etapa, isDataFim){
10095
10096 try{
10097
10098 var splitdata = data.split('/');
10099 var meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
10100 var mes = meses[parseInt(splitdata[1])-1];
10101
10102 var ano = splitdata[2];
10103
10104 if(isDataFim){
10105 ano = parseInt(splitdata[2]);
10106 }
10107
10108 return mes + '/' + ano;
10109 }catch(err){
10110 return data;
10111 }
10112
10113 }
10114
10115 //EMED Mobile
10116 function sliderOfertasEmed(){
10117
10118 var tamScreen = $(window).width();
10119 if(tamScreen < 1024){
10120 $('.ssp-slick-ofertas-emed').slick({
10121 slidesToShow: 1,
10122 slidesToScroll: 1,
10123 dots: false,
10124 infinite: false,
10125 adaptiveHeight: true,
10126 prevArrow:'<button class="btn slick-prev" type="button"><i class="fal fa-chevron-left"></i><span class="sr-only">Anterior</span></button>',
10127 nextArrow:'<button class="btn slick-next" type="button"><i class="fal fa-chevron-right"></i><span class="sr-only">Próximo</span></button>',
10128 responsive: [
10129
10130 {
10131 breakpoint: 1200,
10132 settings: {
10133 slidesToShow: 1,
10134 slidesToScroll: 1,
10135 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>',
10136 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>',
10137
10138 }
10139 },
10140 {
10141 breakpoint: 768,
10142 settings: {
10143 slidesToShow: 1,
10144 slidesToScroll: 1,
10145 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>',
10146 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>',
10147 }
10148 }
10149
10150 ]
10151
10152 });
10153
10154 }
10155
10156 }
10157
10158function addItemBackpack(codOferta, originElemSelector, codUnidade, dataEfetiva){
10159
10160 let backpackPostRequest = {};
10161 backpackPostRequest.codOferta = codOferta;
10162 backpackPostRequest.codUnidade = codUnidade;
10163 backpackPostRequest.dt_efetiva = dataEfetiva;
10164
10165
10166 mochila.requestAccess(function(backpackPostRequest){
10167
10168 let urlMochila = '/o/senac-backpack-services/backpack';
10169
10170 if(getCookie("codMochila") != null){
10171 backpackPostRequest.codMochila = getCookie("codMochila");
10172 urlMochila = '/o/senac-backpack-services/updateBackpack';
10173 }
10174 $.ajax({
10175 type: 'POST',
10176 url: urlMochila,
10177 headers: {
10178 "Content-Type":"application/json"
10179 },
10180 beforeSend: function(xhr){
10181 xhr.setRequestHeader("Authorization", "Bearer " + getCookie("tokenMochila"));
10182 loadingSubmitButton(originElemSelector);
10183 $(originElemSelector + ' .loading-icon-button').css('height', 'unset');
10184 if($(window).width() < 1024){
10185 $(originElemSelector + ' .loading-icon-button span').css('margin-left', '10%');
10186 }
10187 },
10188 data : JSON.stringify(backpackPostRequest)
10189 }).done(function(data) {
10190
10191 let domain = '';
10192 if(getAmbiente() == 'hom' || getAmbiente() == 'prod')
10193 domain = '.sp.senac.br';
10194
10195 writeCookie(
10196 'codMochila',
10197 (getCookie("codMochila") == null) ? data.backpackCode : JSON.parse(data).backpackCode,
10198 24,
10199 domain
10200 );
10201 addItemSuccessMochila();
10202
10203 }).fail(function(xhr, status, error) {
10204
10205 $('#modal-backpack-error').removeClass('d-none');
10206
10207 }).always(function(){
10208
10209 cleanLoadingSubmitButton(
10210 originElemSelector,
10211 originElemSelector.indexOf('backpack') > 0 ? 'OK, desejo comprar' : 'COMPRAR'
10212 );
10213 $('[id^="modalAntesCompra_"]').each(function(index, modal) {
10214 modal.style.display = "none";
10215 });
10216
10217 });
10218
10219 }, backpackPostRequest);
10220
10221}
10222
10223function componentBuyConfirmation(codigoUnidade, oferta, dataEfetiva){
10224
10225 var comp = null;
10226
10227 if((oferta.destinoCompra !== null) && oferta.destinoCompra == "2" && !excecaoCursoGratuito(oferta)){
10228
10229 comp = $("<button>")
10230 .addClass("btn btn-lg btn-success w-100 mt-3 btn-backpack")
10231 .attr("offerCode",oferta.codigoOferta)
10232 .attr("unitCode",codigoUnidade)
10233 .attr("effectiveDate",dataEfetiva)
10234 .text("OK, desejo comprar");
10235
10236 }else {
10237 var textoBotaoConfirmacao = "OK, desejo comprar";
10238
10239 if(excecaoCursoGratuito(oferta))
10240 textoBotaoConfirmacao = "Ok, desejo fazer a matrícula";
10241
10242 comp = $("<a>")
10243 .addClass("btn btn-lg btn-success w-100 mt-3")
10244 .text(textoBotaoConfirmacao)
10245 .attr("href", linkBotaoCompra.replace('\{codigoUnidade\}', codigoUnidade).replace('\{codigoOferta\}', oferta.codigoOferta))
10246 .attr("target","_blank");
10247 }
10248
10249 comp.attr('id', 'btnCompraLocal_' + oferta.indice);
10250
10251 return comp[0].outerHTML;
10252
10253}
10254
10255function getUnidadesSelecionadasRI(){
10256 var unidadesRI = [];
10257
10258 try{
10259
10260 $('#select-unidades-registro-interesse').find('select').each((i,select) =>{
10261 var unidadeSel = select.selectedOptions[0].innerText;
10262 if(!unidadesRI.includes(unidadeSel)) unidadesRI.push(unidadeSel);
10263 });
10264
10265 var unidadesExt = unidadesRI.join(', ');
10266
10267 const lastIndex = unidadesExt.lastIndexOf(',');
10268
10269 if(lastIndex > 0) unidadesExt = unidadesExt.substring(0, lastIndex) + ' ou ' + unidadesExt.substring(lastIndex + 1);
10270
10271 return {
10272 'unidadesPrefix' : (unidadesRI.length > 1 ? ', nas unidades ' : (unidadesRI.length == 1 ? ', na unidade ' : '')),
10273 'unidades' : unidadesExt
10274 };
10275
10276 }catch(err){
10277
10278 return {
10279 'unidadesPrefix' : '',
10280 'unidades' : ''
10281 };
10282
10283 }
10284
10285 }
10286
10287
10288
10289
10290function addItemSuccessMochila(){
10291
10292 mochila.check();
10293 $('#modal-backpack-success__nome-curso').html($('.ssp-card-detalhe-curso__title').text());
10294 $('#modal-backpack-success').removeClass('d-none');
10295
10296}
10297
10298$(document).on('click', '.btn-backpack', function(e){
10299
10300 addItemBackpack(event.target.getAttribute("offerCode"), '.btn-backpack',event.target.getAttribute("unitCode"),event.target.getAttribute("effectiveDate"));
10301
10302});
10303
10304$('#btn-voltar-modal-backpack-error').click(function () {
10305 $('#modal-backpack-error').addClass('d-none');
10306});
10307
10308$('#btn-voltar-modal-backpack-error').click(function () {
10309 $('#modal-backpack-error').addClass('d-none');
10310});
10311
10312$('.btn-mochila-continuar-site-success, .modal-btn-close').click(function () {
10313 $('#modal-backpack-success').addClass('d-none');
10314});
10315
10316$('.btn-mochila-finalizar-compra-success').click(function () {
10317 // Montar object push - google tag manager - 6
10318 sendEventEcommerce("begin_checkout", ofertaSelecionada);
10319
10320 mochila.verificaLogin();
10321 $('#modal-backpack-success').addClass('d-none');
10322 $('[id^="myModal_"]').each((i,modal)=>modal.style.display = "none");
10323});
10324
10325 function closeModalFormAprendizagem(){
10326 let modal = document.querySelector('[data-modal="modal"]')
10327
10328 modal.classList.remove('open-modal-form')
10329
10330 }
10331
10332
10333 function openModalFormAprendizagem(){
10334 let modal = document.querySelector('[data-modal="modal"]')
10335
10336 modal.classList.add('open-modal-form')
10337
10338 }
10339
10340 function addEventBolsa() {
10341 // Mostra o preco
10342 const btnShowPrices = document.querySelectorAll('.btn-show-price')
10343
10344 btnShowPrices.forEach(btnShowPrice => btnShowPrice.addEventListener('click',togglePriceCard))
10345
10346 if(!$('#chkBolsa').prop('checked'))
10347 togglePriceCard()
10348 }
10349
10350 function togglePriceCard(selector){
10351 if(selector instanceof PointerEvent) return
10352
10353 if(!selector) selector = ''
10354 else selector = '.' + selector
10355
10356 const btnPrices = document.querySelectorAll('.show-price-content'+selector)
10357 const contentPrices = document.querySelectorAll('.content-valores-descontos'+selector)
10358 const contentBtnBolsas = document.querySelectorAll('.content-btn-bolsa'+selector)
10359
10360 btnPrices.forEach(btnPrice => btnPrice.classList.toggle('hide'))
10361 contentBtnBolsas.forEach(contentBtnBolsa => contentBtnBolsa.classList.toggle('modifier-content-show'))
10362 contentPrices.forEach(contentPrice => contentPrice.classList.toggle('hide-price'))
10363 }
10364
10365 function getRegiaoName(key) {
10366 switch (key) {
10367 case "C":
10368 return "Capital";
10369 case "I":
10370 return "Interior";
10371 case "GS":
10372 return "Grande São Paulo e Litoral";
10373 default:
10374 return "Sem Região";
10375 }
10376 }
10377
10378 function criarOptionUnidadesPorRegiao(unidades) {
10379 let regioes = {}
10380 let unidadeFounded
10381
10382 unidades.forEach(unidade => {
10383 if(!regioes[unidade.codRegiaoUnidade || 'N'])
10384 regioes[unidade.codRegiaoUnidade || 'N'] = []
10385
10386 regioes[unidade.codRegiaoUnidade || 'N'].push(unidade)
10387 })
10388
10389 Array.from(['C', 'I', 'GS', 'N'])
10390 .filter(key => Object.keys(regioes).includes(key))
10391 .forEach(key => {
10392 const unidadesDaRegiao = regioes[key]
10393
10394 const optionDisabled = $('<option>')
10395 optionDisabled.attr('label', getRegiaoName(key))
10396 optionDisabled.text(getRegiaoName(key));
10397 optionDisabled.attr('disabled', true)
10398 optionDisabled.addClass('ssp-option-group')
10399 $('#unidades-ofertas').append(optionDisabled)
10400
10401 $.each(unidadesDaRegiao, function(k,unidade){
10402 if($('#unidades-ofertas').find('[value="'+unidade['categoryId']+'"]').length == 0){
10403 var option = $('<option>');
10404 option.val(unidade['categoryId']+"@"+unidade['codigoUnidade']);
10405 option.text(unidade['nome']);
10406 option.attr('data-unidade-friendly-url', unidade.friendlyURL)
10407 option.addClass('ssp-option')
10408
10409 $('#unidades-ofertas').append(option);
10410
10411 unidadeFounded = !unidadeFounded && getURLData().includes('/'+unidade.friendlyURL+'/') ? unidade : unidadeFounded
10412 }
10413 })
10414 })
10415
10416 return unidadeFounded
10417 }
10418
10419 function getURLData() {
10420 return URLGeral.replace(HOST, '')
10421 }
10422
10423 /**
10424 * Copia um objeto JSON
10425 */
10426 function cloneObj(original) {
10427 return JSON.parse(JSON.stringify(original));
10428 }
10429
10430 function getUrlConsultaBolsa(oferta){
10431
10432 let url = '';
10433 if (isAmbienteTeste()) {
10434 if(oferta.destinoBolsa=='1') {
10435 url = 'https://hwse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta
10436 } else {
10437 url = 'https://hom-wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta;
10438 }
10439 } else {
10440 if(oferta.destinoBolsa=='1') {
10441 url = 'https://wse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta
10442 } else {
10443 url = 'https://wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta;
10444 }
10445
10446 }
10447
10448 return url;
10449 }
10450
10451 function execCompraEmed(oferta){
10452 let linkInscricaoEmed = '', linkInscricaoEmedHml = '';
10453 if(oferta.etapa == '0010'){
10454 linkInscricaoEmed = 'https://www.sp.senac.br/login/Login?destino=https://inscricao-educacional-ms.sp.senac.br/?oferta={codOferta}';
10455 linkInscricaoEmedHml = 'https://gesportal.sp.senac.br/login/Login?destino=https://hinscricao-educacional-backend.sp.senac.br/?oferta={codOferta}';
10456 }
10457
10458 var ambTeste = ['localhost', 'hom', 'dev'];
10459 var link = linkInscricaoEmed;
10460 $.each(ambTeste, function(i, a){
10461 if(location.hostname.indexOf(a) >= 0){
10462 link = linkInscricaoEmedHml;
10463 return false;
10464 }
10465 });
10466
10467 // Montar object push - google tag manager - 3
10468 ofertaSelecionada = itensEcommerce.get(oferta.codigoOferta)
10469 sendEventEcommerce("select_item", ofertaSelecionada);
10470 sendEventEcommerce("view_item", ofertaSelecionada);
10471 sendEventEcommerce("add_to_cart", ofertaSelecionada);
10472 sendEventEcommerce("begin_checkout", ofertaSelecionada);
10473
10474 var urlCompra = link.replace('\{codOferta\}', oferta.codigoOferta);
10475 window.open(urlCompra, '_blank');
10476 }
10477
10478 function formataDataComBarra(dataInvertidaComTraco){
10479 return dataInvertidaComTraco.split('-').reverse().join('/');
10480 }
10481
10482
10483 let ctrlPressed = false;
10484 $(window).keydown(function (ev) {
10485 if(ev.which == 17){
10486 ctrlPressed = true;
10487 return false;
10488 }
10489 if(ev.which == 82 && ctrlPressed){
10490 return false;
10491 }
10492 return (ev.which != 116); // F5
10493 }).keyup(function(ev) {
10494 if (ev.which == 17){
10495 ctrlPressed = false;
10496 }
10497 return true;
10498 });
10499
10500
10501 </script>
10502
10503</#if>