Para empresas: cursos de Audiovisual no SENAI - Click Sesi Senai
Soluções para sua indústria
Preço
Java method "com.sun.proxy.$Proxy710.fetchCPDefinition(long)" threw an exception when invoked on com.sun.proxy.$Proxy710 object [freemarker.core._DelayedJQuote.toString() failed: com.liferay.portal.kernel.exception.SystemException: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute batch]; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: currentEntry = CPDefinitionLocalServi... [in template "20098#20124#135003" at line 76, column 50] ----
1<#assign CommercePriceListService=serviceLocator.findService("com.liferay.commerce.price.list.service.CommercePriceListLocalService") />
2<#assign CPInstanceLocalService=serviceLocator.findService("com.liferay.commerce.product.service.CPInstanceLocalService") />
3<#setting locale="pt_BR">
4<#assign
5 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
6 commerceContext = renderRequest.getAttribute("COMMERCE_CONTEXT")
7 commerceChannelId = commerceContext.getCommerceChannelId()
8 commerceAccount = commerceContext.getCommerceAccount()
9 commerceAccountId = commerceAccount.getCommerceAccountId()
10 CommercePriceEntryLocalService=serviceLocator.findService("com.liferay.commerce.price.list.service.CommercePriceEntryLocalService")
11 CPDefinitionSpecificationOptionValueLocalService=serviceLocator.findService("com.liferay.commerce.product.service.CPDefinitionSpecificationOptionValueLocalService")
12 orderType = request.getAttribute("tipo_pedido")!"pf"
13 AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
14 AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
15 CPDefinitionLocalService = serviceLocator.findService("com.liferay.commerce.product.service.CPDefinitionLocalService")
16/>
17
18<#function getCategoryFromCPDefinition cPDefinitionId vocabularyName>
19 <#assign
20 vocabularies = AssetVocabularyLocalService.getCompanyVocabularies(companyId)
21 categories = AssetEntryLocalService.fetchEntry("com.liferay.commerce.product.model.CPDefinition",cPDefinitionId).getCategories()
22 />
23 <#list vocabularies as tempVocabulary>
24 <#if tempVocabulary.getName() == vocabularyName>
25 <#assign vocabulary = tempVocabulary>
26 </#if>
27 </#list>
28 <#list categories as category>
29 <#if category.getVocabularyId() == vocabulary.getVocabularyId()>
30 <#return category>
31 </#if>
32 </#list>
33</#function>
34<#function listCategoriesFromCPDefinition cPDefinitionId >
35 <#assign result = [] />
36 <#assign
37 vocabularies = AssetVocabularyLocalService.getCompanyVocabularies(companyId)
38 categories = AssetEntryLocalService.fetchEntry("com.liferay.commerce.product.model.CPDefinition",cPDefinitionId).getCategories()
39 />
40 <#list categories as category>
41 <#list vocabularies as vocabulary>
42 <#if category.getVocabularyId() == vocabulary.getVocabularyId()>
43 <#assign result+=[ {"name":category.getName(), "vocabulary":vocabulary.getName()}] />
44 </#if>
45 </#list>
46 </#list>
47 <#return result />
48</#function>
49
50<#function getPrice entry orderType>
51 <#assign price = 0 />
52 <#assign cpInstance = CPInstanceLocalService.getCPInstance(entry.CPDefinitionId, entry.getCPSkus()[0].getSku()).getCPInstanceUuid() />
53 <#assign commercePriceListId = CommercePriceListService.fetchByExternalReferenceCode("price-list-" + orderType, companyId).getCommercePriceListId() />
54 <#assign priceEntry = CommercePriceEntryLocalService.fetchCommercePriceEntry(commercePriceListId, cpInstance)!"" />
55
56 <#if priceEntry != "">
57 <#assign price=priceEntry.getPrice() />
58 </#if>
59 <#return price>
60</#function>
61
62<#function getTruncate text limit>
63 <#local truncateText = text?truncate(limit)?replace(']', '')?replace('[', '') />
64 <#return truncateText>
65</#function>
66
67<div class="resultado-buscar-commerce">
68<div class="display-card">
69 <ul class="list-unstyled d-flex flex-wrap" style="gap:15px; max-width: 864px">
70 <#if entries?has_content>
71 <#list entries?chunk(3) as row>
72 <#list row as entry>
73 <#assign
74 itemID = entry.CPDefinitionId
75 languageId = themeDisplay.getLanguageId()
76 currentEntry = CPDefinitionLocalService.fetchCPDefinition(itemID)
77 friendlyURL = themeDisplay.getPortalURL() + "/web/loja/curso/" + currentEntry.getURL(languageId)
78 name = entry.getName()
79 cpSkus = entry.getCPSkus()
80 cpSku = cpSkus?first
81 cpInstanceId = cpSku.getCPInstanceId()
82 />
83
84 <#list cpContentHelper.getCPDefinitionSpecificationOptionValues(entry.getCPDefinitionId()) as specs>
85 <#if specs.getCPSpecificationOption().getTitle(languageId) == "web-content">
86 <#assign webContent = specs.getValueCurrentValue() />
87 </#if>
88
89 <#if specs.getCPSpecificationOption().getTitle(languageId)=="json">
90 <#assign
91 json = jsonFactoryUtil.createJSONObject(specs.getValueCurrentValue())
92 dataUltimaAtualizacao = json.getString("data_ultima_atualizacao")
93 cursoDisponivel = false
94 cursoDisponivel = dataUltimaAtualizacao?contains("2024-08")
95 />
96 </#if>
97 </#list>
98
99 <#if webContent?? && webContent?has_content>
100 <#assign journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getSiteGroupId(),webContent) >
101 </#if>
102 <li class="card-page-item position-relative">
103 <a href="${htmlUtil.escapeHREF(friendlyURL)}" class="link-card"></a>
104 <div class="card card--product">
105 <div class="card__header position-relative overflow-hidden">
106 <#if journalArticle?? && journalArticle?has_content>
107 <@liferay_journal["journal-article"]
108 articleId=journalArticle.getArticleId()
109 ddmTemplateKey="305809"
110 groupId=journalArticle.getGroupId()
111 />
112 </#if>
113
114 <#if (getCategoryFromCPDefinition(entry.getCPDefinitionId(),"instituicao")).getName()?has_content>
115 <p class="tag-instituicao">
116 <#-- OFENSOR PERFORMANCE -->
117 ${(getCategoryFromCPDefinition(entry.getCPDefinitionId(),"instituicao")).getName()}
118 </p>
119 </#if>
120
121 </div>
122 <div class="card-body">
123 <div class="card-row">
124 <div class="autofit-col autofit-col-expand">
125 <section class="autofit-section">
126 <h2 class="txt-title">
127 ${getTruncate(htmlUtil.escape(entry.getName())?trim, 54)}
128 </h2>
129 <p class="txt-content">
130 ${getTruncate(htmlUtil.escape(entry.getShortDescription()?trim), 125)}
131 </p>
132 <div class="prices">
133 <p>
134 <span class="prices__currency">R$</span>${getPrice(entry, orderType)?string("0.00")}
135 </p>
136
137 <p class="parcela-minima">
138 Até 3X, parcela mínima R$ 100
139 </p>
140 </div>
141
142 <div class="d-flex justify-content-between align-content-center">
143 <#if (getCategoryFromCPDefinition(entry.getCPDefinitionId(),"modalidade")).getName()?has_content>
144 <div class="tag-modalidade">
145 <#if getCategoryFromCPDefinition(entry.getCPDefinitionId(),"modalidade").getName() == "Educação a Distância">
146 EaD
147 <#else>
148 ${getCategoryFromCPDefinition(entry.getCPDefinitionId(),"modalidade").getName()}
149 </#if>
150 </div>
151 </#if>
152
153 <#if cpSku.getPromoPrice() != 0 && cursoDisponivel>
154 <div style="float: right; background: var(--accent-14); padding: 5px; font-size: 10px;color: var(--primary-dark);">EM PROMOÇÃO</div>
155 </#if>
156 </div>
157
158 <#if journalArticle?? && journalArticle?has_content>
159 <@liferay_journal["journal-article"]
160 articleId=journalArticle.getArticleId()
161 ddmTemplateKey="143781"
162 groupId=journalArticle.getGroupId()
163 />
164 </#if>
165 </section>
166 </div>
167 </div>
168 </div>
169 </div>
170
171
172 <div class="dropdown-contentF" <#if !cursoDisponivel>style="height:365px"</#if>>
173 <span class="tip tip-left"></span>
174 <a href="${htmlUtil.escapeHREF(friendlyURL)}">
175 <h2>${entry.getName()}</h2>
176 </a>
177
178 <#if journalArticle?? && journalArticle?has_content>
179 <p class="txt-dropdown">O que você irá aprender:</p>
180 <@liferay_journal["journal-article"]
181 articleId=journalArticle.getArticleId()
182 ddmTemplateKey="132905"
183 groupId=journalArticle.getGroupId()
184 />
185 <a href="${htmlUtil.escapeHREF(friendlyURL)}">
186 <span class="saiba-mais-text">
187 Saiba Mais
188 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="orange" class="bi bi-arrow-right" viewBox="0 0 16 16">
189 <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z"/>
190 </svg>
191 </span>
192 </#if>
193 </a>
194 <div>
195 <#if cursoDisponivel>
196 <div class="add-to-cart-container justify-content-center">
197 <#attempt>
198 <#assign listCategories = listCategoriesFromCPDefinition(entry.getCPDefinitionId()) />
199 <#assign defaultPrice = (getPrice(entry, orderType)?string('0.00')) />
200 <#recover>
201 <#assign listCategories =[] />
202 <#assign defaultPrice = "0" />
203 </#attempt>
204 <input type="hidden" name="defaultPrice" value="${defaultPrice}">
205 <input type="hidden" name="externalReferenceCode" value="${journalArticle.getTitle(locale)}">
206 <input type="hidden" name="name" value="${entry.getName()}">
207 <#list listCategories as category>
208 <input type="hidden" name="${category.vocabulary}" value="${category.name}">
209 </#list>
210
211 <@liferay_commerce_ui["add-to-cart"]
212 CPInstanceId=entry.CPSkus[0].getCPInstanceId()
213 />
214 </div>
215 </#if>
216 </div>
217 </div>
218 </li>
219 </#list>
220 </#list>
221 </#if>
222 </ul>
223</div>
224</div>
225
226<script>
227 var commerceChannelId=${commerceChannelId};
228 var commerceAccountId=${commerceAccountId};
229
230 $(function () {
231 $('.example-popover').popover({
232 container: 'body'
233 })
234 const cardPopOverW = window.innerWidth;
235 const cardPopOverWRect = document.querySelectorAll(".card-page-item");
236
237 var leftCard = []
238 for (let i = 0; i < cardPopOverWRect.length; i++) {
239 let cardPopOverCard = cardPopOverWRect[i].querySelector('.dropdown-contentF');
240 let cardPopOverLeft= cardPopOverCard.getBoundingClientRect().left;
241 leftCard.push(parseInt(Math.round(cardPopOverLeft)))
242 }
243 for (let i = 0; i < cardPopOverWRect.length; i++) {
244 let maxValueCardLeft = Math.max.apply(null, leftCard);
245 let cardPopOverCard2 = cardPopOverWRect[i].querySelector('.dropdown-contentF');
246 let cardPopOverLeft2 = cardPopOverCard2.getBoundingClientRect().left;
247 if (cardPopOverLeft2 > maxValueCardLeft - 100) {
248 cardPopOverCard2.classList.add("ultimo-card");
249 }
250
251 }
252 })
253</script>
254
255<style>
256 .resultado-buscar-commerce {
257 --primary-dark: #454F75;
258 }
259
260 .resultado-buscar-commerce .add-to-cart .add-to-cart-wrapper .btn-add-to-cart > span::before{
261 content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='currentColor' class='bi bi-cart2' viewBox='0 0 16 16'%3E%3Cpath d='M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5zM3.14 5l1.25 5h8.22l1.25-5H3.14zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0z'/%3E%3C/svg%3E");
262 padding-right: 8px;
263 }
264 .resultado-buscar-commerce .add-to-cart .add-to-cart-wrapper .btn-add-to-cart .text-truncate{
265 color: var(--neutral-1);
266 font-size: 15px;
267 font-weight: normal;
268 }
269 .resultado-buscar-commerce .add-to-cart .add-to-cart-wrapper .btn-add-to-cart .cart-icon,
270 .resultado-buscar-commerce .add-to-cart .add-to-cart-wrapper .quantity-selector{
271 display: none;
272 }
273 .resultado-buscar-commerce .add-to-cart .add-to-cart-wrapper .btn-add-to-cart{
274 background: var(--white) 0% 0% no-repeat padding-box;
275 border: 2px solid var(--action-default);
276 border: 2px solid #FAE954;
277 border-radius: 5px;
278 color: var(--neutral-1);
279 text-align: left;
280 font: normal normal medium 15px/12px Open Sans;
281 }
282 .resultado-buscar-commerce .display-card {
283 margin: 0 auto;
284 width: 100%;
285 }
286
287 .resultado-buscar-commerce .link-card{
288 display: block;
289 width:100%;
290 height:100%;
291 position:absolute;
292 z-index:3
293 }
294 .resultado-buscar-commerce .card{
295 box-shadow: 0 0 10px var(--neutral-5);
296 border: 1px solid var(--neutral-5);
297 transition: all ease .3s;
298 }
299
300 .resultado-buscar-commerce .card--product {
301 height: 100%;
302 margin-bottom: 0;
303 max-width: 278px;
304 border-radius: 8px;
305 overflow: hidden;
306 }
307
308 .resultado-buscar-commerce .card--product .card__header {
309 height: 161px;
310 }
311
312 .resultado-buscar-commerce .card--product .card-body {
313 padding: 13px 14px;
314 }
315
316 .resultado-buscar-commerce .card-page-item:hover .card{
317 box-shadow: 0 0 15px var(--primary-light-2);
318 border: 1px solid var(--primary-light-2);
319 }
320 .resultado-buscar-commerce .dropdown-contentF {
321 visibility: hidden;
322 top: -18%;
323 left: 90%;
324 opacity: 0;
325 position: absolute;
326 background-color: var(--white);
327 width: 352px;
328 height: 92%;
329 border-radius: 5px;
330 box-shadow: 0px 0 15px #00000029;
331 z-index: 998;
332 transition: all 0.5s ease 0s, visibility 0s linear 0s;
333 padding: 20px 26px;
334 }
335 .resultado-buscar-commerce .dropdown-contentF.ultimo-card{
336 left:-90%;
337 }
338
339.resultado-buscar-commerce .tip {
340 width: 0px;
341 height: 0px;
342 position: absolute;
343 background: transparent;
344 border: 15px solid white;
345}
346.resultado-buscar-commerce .tip-left {
347 top: 40%;
348 left: -29px;
349 border-top-color: transparent;
350 border-left-color: transparent;
351 border-bottom-color: transparent;
352}
353
354 .resultado-buscar-commerce .dropdown-contentF.ultimo-card .tip-left{
355 left: auto;
356 right:-29px;
357 transform: scaleX(-1);
358 }
359
360 .resultado-buscar-commerce .txt-title a{
361 line-height: 22px;
362 text-decoration: none;
363 font-size: 16px;
364 color: var(--neutral-1);
365 font-weight: 700;
366 }
367
368 .resultado-buscar-commerce .txt-content {
369 font-size: 14px;
370 line-height: 19px;
371 color: var(--neutral-2);
372 padding-left: 8px;
373 height: 76px;
374 }
375 .resultado-buscar-commerce .txt-ranking {
376 font-size: 14px;
377 color: var(--neutral-1);
378 }
379 .resultado-buscar-commerce .txt-info {
380 font-size: 13px;
381 color: var(--primary-dark);
382 }
383 .txt-ranking span {
384 font-weight: bold;
385 }
386 .resultado-buscar-commerce .txt-dropdown {
387 font-size: 14px;
388 color: var(--neutral-1);
389 font-weight: bold;
390 padding: 10px 0;
391 margin: 0;
392 }
393 .resultado-buscar-commerce .prices {
394 border-top: 1px solid var(--neutral-7);
395 border-bottom: 1px solid var(--neutral-7);
396 padding: 5px 0;
397 margin-bottom: 10px;
398 }
399
400 .resultado-buscar-commerce .prices__currency {
401 font-weight: 600;
402 font-size: 15px;
403 }
404
405 .prices p {
406 font-size: 20px;
407 color: var(--primary-dark);
408 text-align: center;
409 font-weight: bold;
410 margin-bottom: 0;
411 }
412
413 .dropdown-contentF h2 {
414 font-size: 17px;
415 color: var(--neutral-1);
416 border-bottom: 1px solid var(--neutral-7);
417 padding-bottom: 20px;
418 font-weight: bold;
419 margin-bottom: 0
420 }
421
422 .dropdown-contentF ul {
423 padding: 10px 18px;
424 }
425
426 .resultado-buscar-commerce .card-page-item:hover .dropdown-contentF {
427 visibility: visible;
428 opacity: 1;
429 transition-delay: 0s;
430 }
431 .resultado-buscar-commerce .card-page-item:hover .btn-hoverF {
432 visibility: visible;
433 opacity: 1;
434 transition-delay: 0s;
435 }
436 .resultado-buscar-commerce .btn-heart {
437 color: var(--action-secondary);
438 margin-top: 5px;
439 }
440 .resultado-buscar-commerce .btn-outline-warning {
441 padding-top: 5px;
442 padding-bottom: 5px;
443 color: var(--neutral-1);
444 border-color: var(--action-default);
445 }
446 .resultado-buscar-commerce .btn-outline-warning:hover {
447 padding-top: 5px;
448 padding-bottom: 5px;
449 color: var(--white);
450 border-color: var(--action-default);
451 background-color: var(--action-default);
452 }
453 .resultado-buscar-commerce .btn-outline-warning svg {
454 vertical-align: baseline;
455 }
456
457 .resultado-buscar-commerce .txt-title{
458 text-decoration: none;
459 font-size: 16px;
460 color: var(--primary-dark);
461 font-weight: bold;
462 height: 40px;
463 display: flex;
464 align-items: center;
465 padding-left: 8px;
466 }
467
468 .pagination-items-per-page {
469 display: none;
470 }
471
472 .pagination-results {
473 display: none;
474 }
475
476 .journal-content-article ul {
477 max-height: 206px;
478 font-size: 14px;
479 display: block;
480 }
481
482 .journal-content-article li {
483 padding: 5px 0;
484 list-style: none;
485 }
486
487 .journal-content-article li {
488 padding: 5px 0;
489 list-style: none;
490 }
491
492 .journal-content-article li:before {
493 position: relative;
494 content: "✓";
495 left: -8px;
496 color: #A1A1A1;
497 }
498
499 .resultado-buscar-commerce .dropdown-contentF .journal-content-article {
500 overflow-y: auto;
501 max-height: 149px;
502 }
503
504 .resultado-buscar-commerce .journal-content-article img {
505 object-fit: cover;
506 width: 100%;
507 position: initial;
508 transform: none;
509 }
510
511 .resultado-buscar-commerce .saiba-mais-text {
512 padding: 0 0 17px 0;
513 color: black;
514 text-decoration: underline;
515 border-bottom: 1px solid var(--neutral-7);
516 display: block;
517 }
518
519 .pagination {
520 margin: auto;
521 align-items: center;
522 }
523
524 .page-item.active .page-link {
525 background-color: #fff;
526 width: 40px;
527 height: 40px;
528 border: 1px solid #C5C5C5;
529 color: #04050C;
530 font-weight: bold;
531 border-radius: 8px;
532 cursor: default;
533 z-index: 3;
534 }
535
536 li.page-item:first-child:after {
537 content: "Anterior";
538 color:#666;
539 padding-right: 25px;
540 }
541
542 li.page-item:last-child:before {
543 content: " Próximo";
544 color:#666;
545 border-left: 1px solid #666;
546 padding-left: 25px;
547 }
548
549 .lexicon-icon {
550 display: inline-block;
551 fill: orange;
552 height: 1em;
553 margin-top: -3px;
554 vertical-align: middle;
555 width: 1em;
556 }
557
558 .pagination-bar {
559 background: #fff;
560 padding: 15px 0;
561 max-width: 864px;
562 }
563
564 .price-value{
565 font-weight: 550;
566 margin-bottom: 0;
567 }
568
569 p.parcela-minima {
570 font-weight: 500;
571 margin: 0px;
572 font-size: 13px;
573 }
574
575 .card-page-item .card--product .card__header:before {
576 content: "Mais detalhes";
577 background: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='31' height='31' viewBox='0 0 31 31'%3e%3cg id='Icon_feather-plus-circle' data-name='Icon feather-plus-circle' transform='translate(-2.5 -2.5)'%3e%3cpath id='Caminho_382' data-name='Caminho 382' d='M33,18A15,15,0,1,1,18,3,15,15,0,0,1,33,18Z' fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'/%3e%3cpath id='Caminho_383' data-name='Caminho 383' d='M18,12V24' fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'/%3e%3cpath id='Caminho_384' data-name='Caminho 384' d='M12,18H24' fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'/%3e%3c/g%3e%3c/svg%3e") no-repeat center;
578 display: block;
579 width: 100%;
580 height: 50px;
581 position: absolute;
582 z-index: 2;
583 top: 50%;
584 margin-top: -15px;
585 left: 0;
586 padding-top: 41px;
587 font-size:14px;
588 font-weight: 700;
589 background-position-y: 0;
590 color: white;
591 text-align: center;
592 opacity:0;
593 transition:all ease .3s;
594 }
595
596 .card-page-item .card--product .card__header:after {
597 content: "";
598 display: block;
599 width: 100%;
600 height: 100%;
601 background: var(--black);
602 opacity:0;
603 top:0;
604 left:0;
605 position:absolute;
606 z-index:1;
607 transition:all ease .3s;
608 }
609
610 .resultado-buscar-commerce .card-page-item:hover .card--product .card__header:before{
611 opacity:1
612 }
613
614 .resultado-buscar-commerce .card-page-item:hover .card--product .card__header:after{
615 opacity:.5;
616 }
617
618 .resultado-buscar-commerce .vitrine-carga-horaria:after{
619 content:"Hora(s)"
620 }
621
622 .tag-instituicao {
623 background: #fff;
624 position: absolute;
625 font-size: 13px;
626 color: var(--neutral-1);
627 padding: 2px 5px;
628 bottom: 0;
629 margin: 0;
630 right: 17px;
631 border-radius: 4px 4px 0px 0px;
632 }
633
634 .tag-modalidade {
635 font-size: 13px;
636 color: var(--primary-dark);
637 }
638
639@media(max-width: 992px) {
640 .dropdown-contentF{
641 display:none
642 }
643}
644
645
646@media(max-width: 575.98px) {
647 .resultado-buscar-commerce .display-card {
648 width: inherit;
649 padding: inherit;
650 }
651
652 .resultado-buscar-commerce .dropdown-contentF {
653 display: none;
654 }
655
656 .resultado-buscar-commerce .dropdown-contentF{
657 left: 10px;
658 }
659
660 .resultado-buscar-commerce .btn-hoverF{
661 left: initial;
662 }
663
664 .page-link{
665 padding-left:0px;
666 padding-right:0px;
667 }
668
669 li.page-item:first-child:after {
670 padding-right: 0px;
671 padding-left: 5px;
672 }
673
674 .page-item.active .page-link{
675 width: 30px;
676 height: 30px;
677 }
678
679
680 li.page-item:last-child:before {
681 padding-right: 5px;
682 padding-left: 5px;
683 }
684
685 .pagination{
686 font-size: 12px;
687 }
688
689 .page-item{
690 display: flex;
691 align-items: center;
692 }
693
694 li.page-item:first-child:after {
695 display: none
696 }
697
698 li.page-item:last-child:before {
699 display: none
700 }
701
702}
703
704</style>
![](/documents/103107/0/tecnologia-da-informa%C3%A7%C3%A3o-superior.jpg/7f39167c-4b3b-6388-a57e-9bec4f099859?t=1657424573786&download=true)
Impulsione sua carreira na área de Audiovisual!
O mercado de trabalho na área de Tecnologia da Informação está superaquecido e a busca por cursos em TI aumentou consideravelmente, com ótimas oportunidades e boa remuneração. Com os nossos cursos, você terá a opção de aprender a planejar, projetar e aplicar de forma eficiente as soluções tecnológicas. Não perca essa chance!
É onde se planeja e promove estratégias para impulsionar o negócio
É onde se planeja e promove estratégias para impulsionar o negócio
A chance perfeita para dar o salto na sua carreira em uma área que não para de crescer
Na área de Tecnologia da Informação é necessário estar atento às mudanças tecnológicas e estar preparado para o mundo corporativo. É onde se planeja e promove estratégias para impulsionar o negócio, maximizar os resultados e alcançar os objetivos da empresa. Em uma área que não para de crescer, essa é a chance perfeita para dar o salto na sua carreira.
![](/documents/103107/0/240_F_321373195_Bq6u00qKbL6pPH5jmv6tcN8IYvVI3Ny4.jpg/954f796c-8ede-5706-992a-f78ef168148a?t=1657285499056&download=true)