templates/ProfilePreview/page.html.twig line 1

Open in your IDE?
  1. {% extends 'ProfilePreview/grid.html.twig' %}
  2. {% import 'ProfilePreview/utils/macros.partial.twig' as macros %}
  3. {# Проверяем есть ли у нас вообще данные для табов #}
  4. {%- macro _show_tabs(photos,selfies,videos) -%}
  5.     {%- if (photos is defined and photos|length > 0) or
  6.         (selfies is defined and selfies|length > 0) or
  7.         (videos is defined and videos|length > 0)
  8.     -%}
  9.         true
  10.     {%- else -%}
  11.         false
  12.     {%- endif -%}
  13. {%- endmacro -%}
  14. {% macro _profile_heading(profile) %}
  15.     {% set price_apartments = profile.apartmentsPricing ? profile.apartmentsPricing.oneHourPrice : null %}
  16.     {% set price_take_out = profile.takeOutPricing ? profile.takeOutPricing.oneHourPrice : null %}
  17.     {% set price = max(price_apartments, price_take_out) %}
  18.     {# PriceApart >= 5000 ? Вип. Иначе PriceTaleOut >= 7000 ? Вип. Иначе PriceApart <=1500 ? Дешёвая Иначе PriceTakeOut <= 1500 ? Дешёвая #}
  19.     {% trans with {
  20.         'name': profile.name,
  21.         'is_masseur': profile.masseur ? 'masseur' : 'other',
  22.         'age': profile.personParameters.age < 20 ? 'young' : (profile.personParameters.age > 35 ? 'old' : 'other'),
  23.         'is_nice': profile.personParameters.bodyType|body_type == 'SLIM' and (profile.personParameters.hairColor|hair_color in ['BLONDE', 'BRUNETTE']) ? 'nice' : 'other',
  24.         'body': profile.personParameters.bodyType|body_type|trans({}, 'body_types'),
  25.         'price': (price_apartments >= 5000 or price_take_out >= 7000) ? 'high' : (price and price <= 1500 ? 'low' : 'other'),
  26.         } from 'seo_heading' %}profile_heading{% endtrans %}
  27. {% endmacro %}
  28. {% from _self import _profile_heading %}
  29. {% set headingTitle = _profile_heading(profile)|trim %}
  30. {% block navbar_class_masseur_profiles %}
  31.     {# {% if profile.isMasseur %}active{% endif %} #}
  32. {% endblock %}
  33. {% block stylesheet_postload %}
  34.     {# {{ encore_entry_link_tags("styles/public-girl-page") }} #}
  35.     {{- parent() -}}
  36.     {# {% if profile.confirmedVideos is defined and profile.confirmedVideos|length > 0 %}
  37.         <link href="//vjs.zencdn.net/7.0.3/video-js.min.css" rel="stylesheet" media="print" onload="setTimeout(()=>{this.media='all'},200)">
  38.         <!--noindex-->
  39.         <script src="//vjs.zencdn.net/7.0.3/video.min.js"></script>
  40.         <script src="//cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
  41.         <!--/noindex-->
  42.     {% endif %} #}
  43. {% endblock %}
  44. {% block preconnect %}
  45.     {{- parent() -}}
  46.     <link rel="preconnect" href="https://api-maps.yandex.ru">
  47.     <link rel="preconnect" href="https://google.com" />
  48.     {# {% if profile.confirmedVideos is defined and profile.confirmedVideos|length > 0 %}
  49.         <link rel="preconnect" href="//vjs.zencdn.net" />
  50.         <link rel="preconnect" href="//cdn.jsdelivr.net" />
  51.     {% endif %} #}
  52.     {%- if not profile.deleted -%}
  53.     <link rel="preconnect" href="https://cdnjs.cloudflare.com" />
  54.     <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com" />
  55.     {%- endif -%}
  56. {% endblock %}
  57. {# {% block metaSpecial %}
  58.     {{ parent() }}
  59.     {%- if profile.deleted -%}
  60.     {%- else -%}
  61.         {{ profile_kv(profile, 'meta_googlebot') }}
  62.     {%- endif -%}
  63. {% endblock %} #}
  64. {%- set servicesList = "Секс классический|Секс анальный|Секс групповой|Услуги семейной паре|Секс-игрушки|Минет в презервативе|Минет без резинки|Минет глубокий|Минет в машине|Куннилингус|Окончание на грудь|Окончание на лицо|Окончание в рот|Стриптиз профи|Стриптиз не профи|Массаж классический|Массаж профессиональный|Массаж расслабляющий|Массаж тайский|Массаж урологический|Массаж точечный|Массаж эротический|Массаж ветка сакуры|Страпон|Анилингус делаю|Золотой дождь выдача|Золотой дождь прием|Копро выдача|Фистинг анальный|Фистинг классический|Фистинг Вам|Фистинг мне|Госпожа|Игры|Легкая доминация|Порка|Рабыня|Фетиш|Трамплинг|Бондаж|Ролевые игры|Фото/видео съемка|Эскорт|GFE|Целуюсь" -%}
  65. {%- block mainContainer -%}
  66.     {%- set haveMetro = profile.stationsSortedByPrimary|length > 0 -%}
  67.     {%- set commentsCount = profile.comments|length|number_format(0, '.', ' ') -%}
  68.     {%- set commentPlural = '%count% отзывов'|trans({'num': profile.comments|length }) -%}
  69.     {{- knp_menu_render('breadcrumbs', {'template': '__design/v2023/_menu/breadcrumbs.html.twig', profile: profile }) -}}
  70.     <div class="profile full-w-xs">
  71.         <div class="profile-heading d-flex-c mb-3">
  72.             <h1 class="profile-heading-title text-title">{{ seo_heading() }}</h1>
  73.             {%- if profile.approved -%}
  74.                 <svg class="ml-1" viewbox="0 0 26 26" width="26" height="26" fill="none"><path fill="#27AE60" fill-rule="evenodd" d="m22.273 9.983 2.644 3.012-2.644 3.011.369 3.987-3.911.888-2.048 3.445L13 22.745l-3.683 1.592-2.048-3.445-3.91-.888.368-3.998-2.644-3.011 2.644-3.023-.369-3.986 3.911-.878 2.048-3.445L13 3.245l3.683-1.582 2.048 3.445 3.91.888-.368 3.987ZM8.038 12.361l3.434 3.434 7.14-7.128 1.527 1.527-8.666 8.667L6.5 13.888l1.538-1.527Z" clip-rule="evenodd"/></svg>
  75.             {%- endif -%}
  76.         </div>
  77.         {# профиль + данные + фотки #}
  78.         <div class="profile-bio">
  79.             {# профиль + данные #}
  80.             <div class="profile-data d-flex">
  81.                 {% set station_alt = '' -%}
  82.                 {% if haveMetro -%}
  83.                     {%- set station_alt = profile.primaryStation is defined and profile.primaryStation is not empty
  84.                         ? profile.primaryStation
  85.                         : null -%}
  86.                 {% endif -%}
  87.                 <div class="profile-avatar" itemtype="http://schema.org/ImageObject" id="avatar-preview" data-favorite-button>
  88.                     {%- if not profile.deleted -%}
  89.                         {% if profile.city.uriIdentity == default_city().uriIdentity %}
  90.                             {% set alt = profile.name|trans ~ ', ' ~ profile.city.name ~ (station_alt ? ', ' ~ station_alt.name|trans : '' ) ~ ', ' ~ 'год'|plural(profile.personParameters.age) ~ ', анкета ' ~ profile.id ~ (profile.seo.phone is defined ? ", " ~ profile.seo.phone : '') %}
  91.                         {% else %}
  92.                             {% set alt = profile.name|trans ~ ', ' ~ profile.city.name ~ ', ' ~ 'год'|plural(profile.personParameters.age) ~ ', анкета ' ~ profile.id ~ (profile.seo.phone is defined ? ", " ~ profile.seo.phone : '') %}
  93.                         {%- endif -%}
  94.                         {%- set photo = profile|avatar -%}
  95.                         {%- if photo and photo.path -%}
  96.                             {%- set photoType = photo.type == 'photo' ? 'profile_media' : 'profile_media_avatar' -%}
  97.                             <a class="photoswipe image-fade profile-avatar-link{% if not is_user_advertiser(app.user) %} profile-avatar-link--shadow{% endif %}" href="{{ responsive_asset(photo.path, 'profile_media', "fullsize", "jpg") }}" data-gallery="girl-avatar" data-index="0">
  98.                                 <img class="profile-avatar-image" itemprop="contentUrl"
  99.                                     srcset="
  100.                                         {{- responsive_asset(photo.path, photoType, "220x308", "jpg") }} 220w,
  101.                                         {{- responsive_asset(photo.path, photoType, "310x434", "jpg") }} 310w
  102.                                     "
  103.                                     sizes="
  104.                                         (max-width: 768px) 220px,
  105.                                         310px
  106.                                     "
  107.                                     src="{{ responsive_asset(photo.path, photoType, "310x434", "jpg") }}" alt="{{ alt }}" width="310" height="434">
  108.                             </a>
  109.                         {%- else -%}
  110.                             <div class="photoswipe image-fade profile-avatar-link{% if not is_user_advertiser(app.user) %} profile-avatar-link--shadow{% endif %}">
  111.                                 <img class="profile-avatar-image profile-avatar-image-empty" src="{{ asset('assets/images/empty-photo.svg') }}" alt="{{ alt }}" width="310" height="434" style="object-fit:contain;padding:10px;">
  112.                             </div>
  113.                         {%- endif -%}
  114.                         {%- if not is_user_advertiser(app.user) -%}
  115.                             <favorite-button
  116.                                 api-check="{{ path('account.favourites.check', {'profile': profile.id}) }}"
  117.                                 api-like="{{ path('account.favourites.add', {profile: profile.id}) }}"
  118.                                 api-unlike="{{ path('account.favourites.remove', {profile: profile.id}) }}"
  119.                                 registration-url="{{ path('app_security_register') }}?user=visitor"
  120.                                 alternative="true"
  121.                             >
  122.                                 <button class="btn btn-favorite favorite unlike favorite-loading" data-tippy-main="Добавить в избранное" title="Добавить в избранное"><svg class="btn-favorite-icon" width="40" height="40" fill="none">
  123.                                     <path data-like d="m20 35.58-2.42-2.16c-2.8-2.53-5.12-4.71-6.95-6.55a46.04 46.04 0 0 1-4.38-4.93 15.65 15.65 0 0 1-2.27-4.02 11.25 11.25 0 0 1-.65-3.75c0-2.61.88-4.8 2.63-6.54A8.88 8.88 0 0 1 12.5 5 9.88 9.88 0 0 1 20 8.5 9.88 9.88 0 0 1 27.5 5c2.61 0 4.8.88 6.54 2.63a8.88 8.88 0 0 1 2.63 6.54c0 1.27-.22 2.52-.65 3.75a15.63 15.63 0 0 1-2.27 4.02 46.03 46.03 0 0 1-4.38 4.93 188.43 188.43 0 0 1-6.95 6.55L20 35.58Z"/>
  124.                                     <path data-unlike d="m20 35.58-2.42-2.16a188.5 188.5 0 0 1-6.95-6.55 46.04 46.04 0 0 1-4.38-4.93 15.65 15.65 0 0 1-2.27-4.02 11.25 11.25 0 0 1-.65-3.75c0-2.61.88-4.8 2.63-6.54A8.88 8.88 0 0 1 12.5 5 9.88 9.88 0 0 1 20 8.5 9.88 9.88 0 0 1 27.5 5c2.61 0 4.8.88 6.54 2.63a8.88 8.88 0 0 1 2.63 6.54c0 1.27-.22 2.52-.65 3.75a15.63 15.63 0 0 1-2.27 4.02 46.05 46.05 0 0 1-4.38 4.93 188.52 188.52 0 0 1-6.95 6.55L20 35.58Zm0-4.5c2.67-2.39 4.86-4.43 6.58-6.14 1.73-1.7 3.09-3.2 4.09-4.46 1-1.26 1.7-2.39 2.08-3.38.39-.98.58-1.96.58-2.93a5.65 5.65 0 0 0-5.83-5.83c-1.3 0-2.51.36-3.63 1.1a5.67 5.67 0 0 0-2.29 2.81h-3.16a5.67 5.67 0 0 0-2.3-2.81 6.45 6.45 0 0 0-3.62-1.1 5.65 5.65 0 0 0-5.83 5.83c0 .97.2 1.95.58 2.94.39.98 1.08 2.1 2.08 3.37a52.1 52.1 0 0 0 4.09 4.46c1.72 1.7 3.91 3.76 6.58 6.14Z"/>
  125.                                 </svg></button>
  126.                             </favorite-button>
  127.                         {%- endif -%}
  128.                     {%- else -%}
  129.                         <svg class="profile-avatar-image" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 358 500" width="358" height="500" fill="none"><g clip-path="url(#a)"><path fill="#F3F3F3" d="M0 0h357.14v500H0z"/><path fill="#E0E0E0" d="M238.51 119.9c-1.21 6.1-5.04 15.97-5.4 21.42a85.61 85.61 0 0 0-.02 9.15c.26.07.45.15.54.24 1.75 1.47 6.45 5.1 7.15 13.32.68 8.24-6.8 13.34-6.8 13.34l-.19.12c-.07 3.79-.42 9.24-1.56 12.9-1.92 6.08-6.97 13.66-7.67 16.45-.68 2.8-5.75 14.81-5.21 20.1.51 5.27 1.73 17.44-.19 24.37-1.91 6.9-6.8 13.67-8.37 15.63-1.56 1.97-3.83 6.9-4.34 8.74-.52 1.8-10.64 18.27-13.42 20.4-2.78 2.16-4.89 7.43-7.5 10.54a15.39 15.39 0 0 0-3.49 9.88c0 3.13.9 7.9 2.46 9.7 1.56 1.83 8.18 10.56 9.93 16.49 1.73 5.92 5.05 21.55 5.75 26.17.68 4.6 1.38 17.62 2.43 23.05 1.05 5.43 2.08 14.65 4.89 17.13 2.78 2.46 8.18 5.92 9.23 8.57 1.05 2.62 1.05 6.25-.51 7.4-1.6 1.14-5.94 6.6-7.16 10.04-1.21 3.46-1.4 9.22-1.56 11.05-.19 1.8-3.67 4.1-4.89 4.77-1.21.66-8.53 1.48-10.28 1.48-1.73 0-2.78 2.13-4.19 1.8a4.14 4.14 0 0 1-2.61-1.97c-1.22.17-3.14 1.48-3.65.33-1.57.5-4.53.16-5.05-.98-.54-1.17 0-3.63 2.95-4.45 2.96-.82 5.23-1.33 6.28-1.66 1.06-.33 2.08-3.28 2.62-4.61.4-1.03 1.26-3.33 1.24-6.8-.75-.16-1.52.06-1.94.55-.7.82-.54 3.62-1.22 5.26-.7 1.67-3.48 3.14-5.4 2.81-1.91-.33-9.41.17-10.98.66-1.57.49-2.78.98-2.78-1.31 0-2.32 2.08-5.27 3.64-6.6 1.57-1.31 3.32-6.25 4.19-7.9.86-1.65 2.27-6.6 2.78-8.23.54-1.64 2.45-4.78 3.16-8.57.67-3.79-2.97-11.19-4.73-13.34-1.73-2.13-9.23-15.63-15.14-25.51-5.94-9.88-5.75-20.9-6.1-22.4-.35-1.48.7-3.96-.54-5.6-1.22-1.63-3.3-9.87-3.3-11.51 0-1.66-1.4-5.62-2.97-9.06-1.56-3.46-5.75-15.99-6.61-20.25-.89-4.28-10.47-22.23-13.6-45.94-1.66-12.6.65-21.05 3.64-27.13-1.1-1.9-4.6-7.75-5.91-9.27-1.57-1.8-6.78-12-8.35-13.67-1.59-1.64-4.53-7.72-3.5-11.51 1.05-3.8 5.58-15.48 6.45-17.63.89-2.13 8.37-19.6 10.28-22.38 1.92-2.8 3.84-9.55 4.19-11.54.35-1.96 7.15-14.98 9.42-17.27 2.24-2.32 10.96-4.28 15.33-3.3 0-.42-.1-.87-.23-1.29-12.32-2.5-7.95-18.65-7.44-19.96.52-1.31 1.22-9.55 1.22-13.16 0-3.63 1.92-9.38 2.27-11.37.35-1.97-.35-3.8.35-8.9-1.05.68-4.37 4.29-5.07 5.46 0 .82-1.03 1.63-1.92 1.63-.87 0-1.03.99-1.57 1.97-.51.98-1.38.5-1.91-.82-.52-1.3-2.08-6.08-2.08-7.4 0 0-1.06 1.15-1.92.99.16.98-.54 1.96-.87 2.95-.35 1-1.05 3.3-1.91 3.3-.9 0-.9-1.48-.7-2.46a152 152 0 0 1 1.21-6.27c.16-.66-.7-2.3.35-3.12 1.05-.84 1.73-1.99 3.13-3.3 1.4-1.3 3.67-4.93 3.49-5.75-.17-.82.51-2.48 2.61-2.48 2.09 0 2.62-.5 6.27-.99 3.67-.49 10.98-5.1 12.55-5.43 1.57-.33 3.48-1.47 4.7-1.66 1.24-.16 2.27-.66 3.32.19 1.05.82 1.75.98 6.26.65 4.54-.33 39.04 2.62 41.5 3.12 2.42.49 8.88 1.5 10.6.81 1.76-.65 4.54 1.18 5.4 2.81.9 1.64 1.4 7.75 1.24 10.2-.18 2.49 2.95 16.49 3.3 27.02.35 10.53-4.35 23.71-5.57 29.8ZM149.8 63.09a2.75 2.75 0 0 0-1.26 2.36c0 .98.41 3.37.41 3.37s0 .58 1.06-.4c-.21-1.2-.21-5.33-.21-5.33Zm6.47 53.53c-.96-1.34-1.75-3.4-2.55-6.6a11.52 11.52 0 0 0-.07 5.94c.56 2.1 4 3.88 5.36 4.54-.84-1.54-2.08-2.95-2.74-3.88Zm5.92 51.86c-.73-.8-4.8-6.2-7.84-10.27l-1.21.89s-6.8 11.37-10.28 15.16c-3.49 3.77-5.92 13.49-11 18.92-3.47 3.95-.5 5.45-.5 5.45s4.18 8.7 5.58 11.19c1.29 2.3 3.16 4.82 4.25 5.73 5.12-6.3 16.86-15.21 19.43-17.92 2.97-3.12 5.07-2.46 7.5-4.94 2.43-2.46 1.92-7.07 2.43-10.54-8.36-1.96-8.36-11.35-8.36-13.67Zm46.18-105.7c-2.27-.82-12.71-3.3-12.71-3.3l-.17.28c2.74 1.92 7.6 5.76 8.7 9.62 1.56 5.43 3.13 13 3.48 19.43.33 5.9 1.68 21.02 5.03 28.65 1.03-3.28 3.78-7.89 5.6-10.89 1.92-3.1 2.09-3.76 4-7.72 0-7.91 1.6-28.65 1.6-31.95-2.98-.33-13.26-3.3-15.53-4.12Z"/><circle cx="179.07" cy="250.1" r="80.03" fill="#BDBDBD"/><path fill="#E7E7E7" d="M205.08 242.6h-7.5v-18.76a18.76 18.76 0 0 0-37.52 0v18.76h-7.5a7.5 7.5 0 0 0-7.5 7.5v37.52a7.5 7.5 0 0 0 7.5 7.5h52.52a7.5 7.5 0 0 0 7.5-7.5V250.1a7.5 7.5 0 0 0-7.5-7.5Zm-26.26 33.76a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Zm7.5-33.76h-15v-18.76a7.5 7.5 0 0 1 15 0v18.76Z"/></g><defs><clipPath id="a"><rect width="357.14" height="500" fill="#fff" rx="20"/></clipPath></defs></svg>
  130.                     {%- endif -%}
  131.                 </div>
  132.                 <div class="profile-info">
  133.                     <div class="profile-contacts profile-contacts--desktop">
  134.                         {%- include 'ProfilePreview/components/profile-phone.partial.twig' with {} -%}
  135.                         <div class="profile-contacts-text clr-green-text">Сообщите мне, что звоните с сайта "МосДосуг" и я всё пойму</div>
  136.                         <div class="profile-contacts-answer-type">
  137.                             <span>Отвечаю на</span>
  138.                             {% if profile.phoneCallRestrictions.answeringTo|length > 0 %}
  139.                                 {% for answeringTo in profile.phoneCallRestrictions.answeringTo %}
  140.                                     {{ answeringTo|answering_to|trans({}, 'phone_call_restrictions') }}{% if not loop.last %},{% endif %}
  141.                                 {% endfor %}
  142.                             {% else %}
  143.                                 Не указано
  144.                             {% endif %}
  145.                         </div>
  146.                         <div class="profile-contacts-answer-time">{{ macros._time_to_work(profile) }}</div>
  147.                     </div>
  148.                     {# {% if not profile.approved %}
  149.                         <div class="profile-attention profile-attention--desktop d-flex-c clr-green-text clr-pre-white-bg fw-700">
  150.                             <svg class="mr-1" width="24" height="24" fill="none"><path fill="#27AE60" fill-rule="evenodd" d="M20.56 9.22 23 12l-2.44 2.78.34 3.68-3.61.82-1.89 3.18L12 21l-3.4 1.47-1.89-3.18-3.61-.82.34-3.7L1 12l2.44-2.8-.34-3.67 3.61-.81L8.6 1.54 12 3l3.4-1.46 1.89 3.18 3.61.82-.34 3.68ZM7.42 11.4l3.17 3.17L17.18 8l1.41 1.41-8 8L6 12.82l1.42-1.41Z" clip-rule="evenodd"/></svg>
  151.                             <span>Фото проверено</span>
  152.                         </div>
  153.                     {%- else -%}
  154.                         <div class="profile-attention profile-attention--desktop d-flex-c clr-main-text clr-pre-white-bg fw-700">
  155.                             <span>Никогда не отправляйте предоплату!</span>
  156.                         </div>
  157.                     {%- endif -%} #}
  158.                     {%- include 'ProfilePreview/components/profile-approved.partial.twig' with {type: 'desktop'} -%}
  159.                     {#/* ---------------------------- Метро город район --------------------------- */#}
  160.                     {%- include 'ProfilePreview/components/profile-location.partial.twig' with {type: 'desktop', template: 'profile'} -%}
  161.                     {#/* ---------------------------------- Прайс --------------------------------- */#}
  162.                     <div class="profile-time d-flex">
  163.                         {%- set currencyProfile -%}{{ profile.city.countryCode|country_currency }}{%- endset -%}
  164.                         <div class="profile-time-table">
  165.                             {%- set oneHour -%}{{ macros._get_time_price(profile.apartmentsPricing.oneHourPrice, currencyProfile) }}{%- endset -%}
  166.                             {%- set twoHours -%}{{ macros._get_time_price(profile.apartmentsPricing.twoHoursPrice, currencyProfile) }}{%- endset -%}
  167.                             {%- set fullNight -%}{{ macros._get_time_price(profile.apartmentsPricing.nightPrice, currencyProfile) }}{%- endset -%}
  168.                             {%- set express = profile.expressPricing.provided ? (macros._get_time_price(profile.expressPricing.price, profile.city.countryCode|country_currency) ) : "-" -%}
  169.                             <div class="profile-time-heading mb-1 fw-700">У меня</div>
  170.                             <div class="profile-time-cell-list d-flex">
  171.                                 <div class="profile-time-cell d-flex clr-light-bronze-bg">
  172.                                     <span class="profile-time-cell-title">Час</span>
  173.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ oneHour }}</span>
  174.                                 </div>
  175.                                 <div class="profile-time-cell d-flex clr-light-bronze-bg">
  176.                                     <span class="profile-time-cell-title">2 часа</span>
  177.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ twoHours }}</span>
  178.                                 </div>
  179.                                 <div class="profile-time-cell d-flex clr-light-bronze-bg">
  180.                                     <span class="profile-time-cell-title">Ночь</span>
  181.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ fullNight }}</span>
  182.                                 </div>
  183.                                 <div class="profile-time-cell d-flex clr-light-bronze-bg">
  184.                                     <span class="profile-time-cell-title">Экспресс</span>
  185.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ express }}</span>
  186.                                 </div>
  187.                             </div>
  188.                         </div>
  189.                         <div class="profile-time-table">
  190.                             {%- set oneHour -%}{{ macros._get_time_price(profile.takeOutPricing.oneHourPrice, currencyProfile) }}{%- endset -%}
  191.                             {%- set twoHours -%}{{ macros._get_time_price(profile.takeOutPricing.twoHoursPrice, currencyProfile) }}{%- endset -%}
  192.                             {%- set fullNight -%}{{ macros._get_time_price(profile.takeOutPricing.nightPrice, currencyProfile) }}{%- endset -%}
  193.                             <div class="profile-time-heading mb-1 fw-700">У Вас</div>
  194.                             <div class="profile-time-cell-list d-flex">
  195.                                 <div class="profile-time-cell d-flex clr-pre-white-bg">
  196.                                     <span class="profile-time-cell-title">Час</span>
  197.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ oneHour }}</span>
  198.                                 </div>
  199.                                 <div class="profile-time-cell d-flex clr-pre-white-bg">
  200.                                     <span class="profile-time-cell-title">2 часа</span>
  201.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ twoHours }}</span>
  202.                                 </div>
  203.                                 <div class="profile-time-cell d-flex clr-pre-white-bg">
  204.                                     <span class="profile-time-cell-title">Ночь</span>
  205.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">{{ fullNight }}</span>
  206.                                 </div>
  207.                                 <div class="profile-time-cell d-flex clr-pre-white-bg">
  208.                                     <span class="profile-time-cell-title">Экспресс</span>
  209.                                     <span class="profile-time-cell-value fw-700 ml-auto clr-main-text">-</span>
  210.                                 </div>
  211.                             </div>
  212.                         </div>
  213.                     </div>
  214.                 </div>
  215.                 <div class="profile-stat">
  216.                     <div class="profile-stat-rating d-flex-c">
  217.                         <svg class="mr-1" width="16" height="16" fill="none"><path fill="#FF3F40" d="M7.5 12.86c.3-.22.7-.22 1 0l3.02 2.3a.82.82 0 0 0 1.27-.9l-1.19-3.82c-.1-.33.02-.7.3-.9L15 7.23a.82.82 0 0 0-.49-1.48h-3.74a.82.82 0 0 1-.78-.57L8.78 1.24a.82.82 0 0 0-1.56 0L6.01 5.18a.82.82 0 0 1-.78.57H1.49a.82.82 0 0 0-.5 1.48l3.12 2.31c.27.2.4.57.29.9l-1.2 3.83a.82.82 0 0 0 1.28.9l3.03-2.3Z"/></svg>
  218.                         <span class="fw-600 mr-2">
  219.                             {{ rating }}
  220.                         </span>
  221.                         <a href="#comments">{{ commentsCount }} {{commentPlural}}</a>
  222.                     </div>
  223.                     <div class="profile-stat-table">
  224.                         {{- macros._data_wrapper('Возраст', profile.personParameters.age) -}}
  225.                         {{- macros._data_wrapper('Рост', profile.personParameters.height) -}}
  226.                         {{- macros._data_wrapper('Вес', profile.personParameters.weight) -}}
  227.                         {{- macros._data_wrapper('Грудь', profile.personParameters.breastSize) -}}
  228.                         {% if feature('has_breast_type') %}
  229.                             <div class="profile-stat-table-item d-flex-c">
  230.                                 <span class="profile-stat-table-item-title">Тип груди</span>
  231.                                 <span class="profile-stat-table-item-value">
  232.                                     {%- if profile.personParameters.breastType -%}
  233.                                         <a class="link" target="_blank" href="{{ path('profile_list.list_by_breast_type', {'city': city.uriIdentity, 'breastType': profile.personParameters.breastType|breast_type_uri}) }}">
  234.                                             {{- profile.personParameters.breastType|breast_type|trans({}, 'breast_types') -}}
  235.                                         </a>
  236.                                     {%- else -%}
  237.                                         -
  238.                                     {%- endif -%}
  239.                                 </span>
  240.                             </div>
  241.                         {%- endif -%}
  242.                         {{- macros._data_wrapper('Размер одежды', profile.personParameters.clothSize) -}}
  243.                         {{- macros._data_wrapper('Размер обуви', profile.personParameters.shoesSize) -}}
  244.                         {{- macros._data_wrapper('Тату', profile.personParameters.tattoo, true) -}}
  245.                         {{- macros._data_wrapper('Пирсинг', profile.personParameters.piercing, true) -}}
  246.                         <div class="profile-stat-table-item d-flex-c">
  247.                             <span class="profile-stat-table-item-title">Телосложение</span>
  248.                             <span class="profile-stat-table-item-value">
  249.                                 {%- if profile.personParameters.bodyType -%}
  250.                                     <a class="link" href="{{ path('profile_list.list_by_body_type', {'city': city.uriIdentity, 'bodyType': profile.personParameters.bodyType|body_type_uri}) }}" target="_blank">{{- profile.personParameters.bodyType|body_type|trans({}, 'body_types') -}}</a>
  251.                                 {%- else -%}
  252.                                     -
  253.                                 {%- endif -%}
  254.                             </span>
  255.                         </div>
  256.                         <div class="profile-stat-table-item d-flex-c">
  257.                             <span class="profile-stat-table-item-title">Цвет волос</span>
  258.                             <span class="profile-stat-table-item-value">
  259.                                 {%- if profile.personParameters.hairColor -%}
  260.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_hair_color', {'city': city.uriIdentity,'hairColor': profile.personParameters.hairColor|hair_color_uri|slugify}) }}">
  261.                                         {{- profile.personParameters.hairColor|hair_color|trans({}, 'hair_colors') -}}
  262.                                     </a>
  263.                                 {%- else -%}
  264.                                     -
  265.                                 {%- endif -%}
  266.                             </span>
  267.                         </div>
  268.                         <div class="profile-stat-table-item d-flex-c">
  269.                             <span class="profile-stat-table-item-title">Национальность</span>
  270.                             <span class="profile-stat-table-item-value">
  271.                                 {%- if profile.personParameters.nationality -%}
  272.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_nationality', {'city': city.uriIdentity,'nationality': profile.personParameters.nationality|nationality_uri}) }}">
  273.                                         {{- profile.personParameters.nationality|nationality|trans({}, 'nationalities') -}}
  274.                                     </a>
  275.                                 {%- else -%}
  276.                                     -
  277.                                 {%- endif -%}
  278.                             </span>
  279.                         </div>
  280.                         <div class="profile-stat-table-item d-flex-c">
  281.                             <span class="profile-stat-table-item-title">Интимная стрижка</span>
  282.                             <span class="profile-stat-table-item-value">
  283.                                 {%- if profile.personParameters.privateHaircut -%}
  284.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_private_haircut', {'city': city.uriIdentity,'privateHaircut': profile.personParameters.privateHaircut|private_haircut_uri}) }}">
  285.                                         {{- profile.personParameters.privateHaircut|private_haircut|trans({}, 'private_haircuts') -}}
  286.                                     </a>
  287.                                 {%- else -%}
  288.                                     -
  289.                                 {%- endif -%}
  290.                             </span>
  291.                         </div>
  292.                     </div>
  293.                     <div class="profile-stat-table">
  294.                         {% set threshold = ("now"|date_modify("-14 days")).getTimestamp() %}
  295.                         {% set updatedAtTs = profile.updatedAt ? profile.updatedAt.getTimestamp() : null %}
  296.                         {{- macros._data_wrapper('Дата регистрации', profile.createdAt|date("d") ~ ' ' ~ profile.createdAt|date("m")|trans({}, 'date') ~ ' ' ~ profile.createdAt|date("Y") ~ ' ' ~ profile.createdAt|date("H:i")) -}}
  297.                         {% if updatedAtTs >= threshold %}
  298.                             {{- macros._data_wrapper('Дата обновления', profile.updatedAt|date("d") ~ ' ' ~ profile.updatedAt|date("m")|trans({}, 'date') ~ ' ' ~ profile.updatedAt|date("Y") ~ ' ' ~ profile.updatedAt|date("H:i")) -}}
  299.                         {% endif %}
  300.                         {{- macros._data_wrapper('ID анкеты', profile.id) -}}
  301.                     </div>
  302.                 </div>
  303.             </div>
  304.             {%- if profile.deleted -%}
  305.                 {%- include 'ProfilePreview/components/deleted-profile.partial.twig' with {type: "profile", template: 'mobile'} -%}
  306.             {%- endif -%}
  307.             {# фотки #}
  308.             {%- if _self._show_tabs(profile.photos, profile.selfies, profile.confirmedVideos) == 'true' and not profile.deleted -%}
  309.                 {%- include 'ProfilePreview/components/media.partial.twig' with {template: 'profile'} -%}
  310.             {%- endif -%}
  311.             {%- include 'ProfilePreview/components/table-contacts.partial.twig' with {template: 'profile'} -%}
  312.             <div class="profile-location profile-block">
  313.                 {%- include 'ProfilePreview/components/profile-location.partial.twig' with {type: 'mobile', template: 'profile'} -%}
  314.             </div>
  315.             
  316.             <div class="profile-stat-mobile profile-block">
  317.                 <div class="profile-stat-table-mobile d-flex-c">
  318.                     {{- macros._data_wrapper('Возраст', profile.personParameters.age) -}}
  319.                     {{- macros._data_wrapper('Рост', profile.personParameters.height) -}}
  320.                     {{- macros._data_wrapper('Вес', profile.personParameters.weight) -}}
  321.                     {{- macros._data_wrapper('Грудь', profile.personParameters.breastSize) -}}
  322.                     {{- macros._data_wrapper('Одежда', profile.personParameters.clothSize) -}}
  323.                     {{- macros._data_wrapper('Обувь', profile.personParameters.shoesSize) -}}
  324.                     {{- macros._data_wrapper('Тату', profile.personParameters.tattoo, true) -}}
  325.                     {{- macros._data_wrapper('Пирсинг', profile.personParameters.piercing, true) -}}
  326.                 </div>
  327.                 <div class="profile-stat-rating d-flex-c">
  328.                     <svg class="mr-1" width="16" height="16" fill="none"><path fill="#FF3F40" d="M7.5 12.86c.3-.22.7-.22 1 0l3.02 2.3a.82.82 0 0 0 1.27-.9l-1.19-3.82c-.1-.33.02-.7.3-.9L15 7.23a.82.82 0 0 0-.49-1.48h-3.74a.82.82 0 0 1-.78-.57L8.78 1.24a.82.82 0 0 0-1.56 0L6.01 5.18a.82.82 0 0 1-.78.57H1.49a.82.82 0 0 0-.5 1.48l3.12 2.31c.27.2.4.57.29.9l-1.2 3.83a.82.82 0 0 0 1.28.9l3.03-2.3Z"/></svg>
  329.                     <span class="fw-600 mr-2">
  330.                         {{ rating }}
  331.                     </span>
  332.                     <a href="#comments">{{ commentsCount }} {{commentPlural}}</a>
  333.                 </div>
  334.                 <div class="profile-stat-list d-flex">
  335.                     <div class="profile-stat-list-column d-flex">
  336.                         <div class="profile-stat-list-item d-flex-c">
  337.                             <span class="profile-stat-list-item-title">Телосложение</span>
  338.                             <span class="profile-stat-list-item-value">
  339.                                 {%- if profile.personParameters.bodyType -%}
  340.                                     <a class="link" href="{{ path('profile_list.list_by_body_type', {'city': city.uriIdentity, 'bodyType': profile.personParameters.bodyType|body_type_uri}) }}" target="_blank">{{- profile.personParameters.bodyType|body_type|trans({}, 'body_types') -}}</a>
  341.                                 {%- else -%}
  342.                                     -
  343.                                 {%- endif -%}
  344.                             </span>
  345.                         </div>
  346.                         <div class="profile-stat-list-item d-flex-c">
  347.                             <span class="profile-stat-list-item-title">Цвет волос</span>
  348.                             <span class="profile-stat-list-item-value">
  349.                                 {%- if profile.personParameters.hairColor -%}
  350.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_hair_color', {'city': city.uriIdentity,'hairColor': profile.personParameters.hairColor|hair_color_uri|slugify}) }}">
  351.                                         {{- profile.personParameters.hairColor|hair_color|trans({}, 'hair_colors') -}}
  352.                                     </a>
  353.                                 {%- else -%}
  354.                                     -
  355.                                 {%- endif -%}
  356.                             </span>
  357.                         </div>
  358.                         {% if feature('has_breast_type') %}
  359.                             <div class="profile-stat-list-item d-flex-c">
  360.                                 <span class="profile-stat-list-item-title">Тип груди</span>
  361.                                 <span class="profile-stat-list-item-value">
  362.                                     {%- if profile.personParameters.breastType -%}
  363.                                         <a class="link" target="_blank" href="{{ path('profile_list.list_by_breast_type', {'city': city.uriIdentity, 'breastType': profile.personParameters.breastType|breast_type_uri}) }}">
  364.                                             {{- profile.personParameters.breastType|breast_type|trans({}, 'breast_types') -}}
  365.                                         </a>
  366.                                     {%- else -%}
  367.                                         -
  368.                                     {%- endif -%}
  369.                                 </span>
  370.                             </div>
  371.                         {%- endif -%}
  372.                         <div class="profile-stat-list-item d-flex-c">
  373.                             <span class="profile-stat-list-item-title">Национальность</span>
  374.                             <span class="profile-stat-list-item-value">
  375.                                 {%- if profile.personParameters.nationality -%}
  376.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_nationality', {'city': city.uriIdentity,'nationality': profile.personParameters.nationality|nationality_uri}) }}">
  377.                                         {{- profile.personParameters.nationality|nationality|trans({}, 'nationalities') -}}
  378.                                     </a>
  379.                                 {%- else -%}
  380.                                     -
  381.                                 {%- endif -%}
  382.                             </span>
  383.                         </div>
  384.                         <div class="profile-stat-list-item d-flex-c">
  385.                             <span class="profile-stat-list-item-title">Интимная стрижка</span>
  386.                             <span class="profile-stat-list-item-value">
  387.                                 {%- if profile.personParameters.privateHaircut -%}
  388.                                     <a class="link" target="_blank" href="{{ path('profile_list.list_by_private_haircut', {'city': city.uriIdentity,'privateHaircut': profile.personParameters.privateHaircut|private_haircut_uri}) }}">
  389.                                         {{- profile.personParameters.privateHaircut|private_haircut|trans({}, 'private_haircuts') -}}
  390.                                     </a>
  391.                                 {%- else -%}
  392.                                     -
  393.                                 {%- endif -%}
  394.                             </span>
  395.                         </div>
  396.                     </div>
  397.                     <div class="profile-stat-list-column d-flex">
  398.                         {%- if profile.createdAt -%}
  399.                             <div class="profile-stat-list-item d-flex-c">
  400.                                 <span class="profile-stat-list-item-title">Дата регистрации</span>
  401.                                 <span class="profile-stat-list-item-value">
  402.                                     {{- profile.createdAt|date("d") ~ ' ' ~ profile.createdAt|date("m")|trans({}, 'date') ~ ' ' ~ profile.createdAt|date("Y") ~ ' ' ~ profile.createdAt|date("H:i") -}}
  403.                                 </span>
  404.                             </div>
  405.                         {%- endif -%}
  406.                         {%- set threshold = ("now"|date_modify("-14 days")).getTimestamp() -%}
  407.                         {%- set updatedAtTs = profile.updatedAt ? profile.updatedAt.getTimestamp() : '' -%}
  408.                         {%- if updatedAtTs and updatedAtTs >= threshold -%}
  409.                             <div class="profile-stat-list-item d-flex-c">
  410.                                 <span class="profile-stat-list-item-title">Дата обновления</span>
  411.                                 <span class="profile-stat-list-item-value">
  412.                                     {{- profile.updatedAt|date("d") ~ ' ' ~ profile.updatedAt|date("m")|trans({}, 'date') ~ ' ' ~ profile.updatedAt|date("Y") ~ ' ' ~ profile.updatedAt|date("H:i") -}}
  413.                                 </span>
  414.                             </div>
  415.                         {%- endif -%}
  416.                         <div class="profile-stat-list-item d-flex-c">
  417.                             <span class="profile-stat-list-item-title">ID анкеты</span>
  418.                             <span class="profile-stat-list-item-value">
  419.                                 {{- profile.id -}}
  420.                             </span>
  421.                         </div>
  422.                     </div>
  423.                 </div>
  424.                 {%- include 'ProfilePreview/components/profile-approved.partial.twig' with {type: 'mobile'} -%}
  425.             </div>
  426.         </div>
  427.         {# о себе #}
  428.         <div class="profile-block profile-block--about d-flex white-round">
  429.             <h2 class="text-xl">О СЕБЕ</h2>
  430.             <p class="text-basic">{{ profile.description|nl2br }}</p>
  431.         </div>
  432.         {# сервис #}
  433.         {% set template = 'profiles' %}
  434.         {% set mappingService = template == 'profiles' ? services|filter((serviceGroup, group) => not profile.masseur or group not in masseurExcludeServiceGroups) : services %}
  435.         {% set haveServices = false %}
  436.         {% for group, servicesGroup in mappingService %}
  437.             {# на случай если нужно было показывать только укомплектованные услуги #}
  438.             {% for service in servicesGroup %}
  439.                 {% if profile.providedService(service) %}
  440.                     {% set haveServices = true %}
  441.                 {% endif %}
  442.             {% endfor %}
  443.         {% endfor %}
  444.         {% if haveServices %}
  445.         <div class="profile-block d-flex white-round mb-4">
  446.             <div class="profile-block-heading profile-block-heading--service d-flex-c">
  447.                 <h2 class="text-xl">УСЛУГИ, ОКАЗЫВАЕМЫЕ ДЕВУШКОЙ</h2>
  448.                 <div class="service-heading">
  449.                     <div class="service-heading-list d-flex-c">
  450.                         <div class="d-flex-c">
  451.                             <svg class="service-icon mr-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20">
  452.                                 <use xlink:href="#service-green"></use>
  453.                             </svg>
  454.                             <span>- включено в стоимость</span>
  455.                         </div>
  456.                         <div class="d-flex-c">
  457.                             <svg class="service-icon mr-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20">
  458.                                 <use xlink:href="#service-orange"></use>
  459.                             </svg>
  460.                             <span>- по симпатии</span>
  461.                         </div>
  462.                         <div class="d-flex-c">
  463.                             <svg class="service-icon mr-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20">
  464.                                 <use xlink:href="#service-red"></use>
  465.                             </svg>
  466.                             <span>- за дополнительную плату</span>
  467.                         </div>
  468.                         {# <div class="d-flex-c">
  469.                             <svg class="service-icon mr-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20">
  470.                                 <use xlink:href="#service-grey"></use>
  471.                             </svg>
  472.                             <span>- услуга не предоставляется</span>
  473.                         </div> #}
  474.                     </div>
  475.                 </div>
  476.             </div>
  477.             <div class="profile-services">
  478.                 {%- include 'ProfilePreview/components/services.partial.twig' with {template: 'profiles'} -%}
  479.             </div>
  480.             {%- if (profile.clientTypes|length > 0) -%}
  481.                 <div class="service-special d-flex-c">
  482.                     <h3 class="service-special-title">Услуги для</h3>
  483.                     <div class="service-special-list d-flex-c">
  484.                         {%- set client_types_text = ['1','2','3','4','5'] -%}
  485.                         {%- set includeService = false -%}
  486.                         {%- for clientTypeText in client_types_text -%}
  487.                             {%- for clientType in profile.clientTypes -%}
  488.                                 {%- if (clientTypeText == clientType) -%}
  489.                                     {%- set includeService = true -%}
  490.                                 {%- endif -%}
  491.                             {%- endfor -%}
  492.                             {%- if clientTypeText|client_type != 'TRANS' -%}
  493.                                 {%- if includeService == true -%}
  494.                                     <div class="service-special-item d-flex-c"><svg class="mr-1" fill="none" viewBox="0 0 20 20" width="20"><use xlink:href="#service-include"></use></svg><span>
  495.                                         {{- clientTypeText|client_type|trans({}, 'client_types') -}}
  496.                                     </span></div>
  497.                                 {%- else -%}
  498.                                     {# <div class="service-special-item d-flex-c"><svg class="mr-1" fill="none" viewBox="0 0 18 18" width="18"><path fill="#E0E0E0" fill-rule="evenodd" d="M9 .666A8.336 8.336 0 00.667 8.999c0 4.6 3.733 8.334 8.333 8.334s8.334-3.734 8.334-8.334S13.6.666 9 .666zM5.001 7.999h8v2h-8V8zM2.334 9A6.676 6.676 0 009 15.666a6.676 6.676 0 006.667-6.667A6.676 6.676 0 009 2.333a6.676 6.676 0 00-6.666 6.666z" clip-rule="evenodd"/></svg><span>
  499.                                         {{- clientTypeText|client_type|trans({}, 'client_types') -}}
  500.                                     </span></div> #}
  501.                                 {%- endif -%}
  502.                             {%- endif -%}
  503.                             {%- set includeService = false -%}
  504.                         {%- endfor -%}
  505.                     </div>
  506.                 </div>
  507.             {%- endif -%}
  508.             {%- if (profile.takeOutPricing.locations|length > 0) -%}
  509.                 <div class="service-special d-flex-c">
  510.                     <h3 class="service-special-title">Выезд</h3>
  511.                     <div class="service-special-list d-flex-c">
  512.                         {%- set locations_text = ['1','2','3','4','5','6'] -%}
  513.                         {%- set includeService = false -%}
  514.                         {%- for locationsText in locations_text -%}
  515.                             {%- for locations in profile.takeOutPricing.locations -%}
  516.                                 {%- if (locationsText == locations) -%}
  517.                                     {%- set includeService = true -%}
  518.                                 {%- endif -%}
  519.                             {%- endfor -%}
  520.                             {%- if includeService == true -%}
  521.                                 <div class="service-special-item d-flex-c"><svg class="mr-1" fill="none" viewBox="0 0 20 20" width="20"><use xlink:href="#service-include"></use></svg><span>
  522.                                     {{- locationsText|take_out_location|trans({}, 'take_out_location') -}}
  523.                                 </span></div>
  524.                             {%- else -%}
  525.                                 {# <div class="service-special-item d-flex-c"><svg class="mr-1" fill="none" viewBox="0 0 18 18" width="18"><path fill="#E0E0E0" fill-rule="evenodd" d="M9 .666A8.336 8.336 0 00.667 8.999c0 4.6 3.733 8.334 8.333 8.334s8.334-3.734 8.334-8.334S13.6.666 9 .666zM5.001 7.999h8v2h-8V8zM2.334 9A6.676 6.676 0 009 15.666a6.676 6.676 0 006.667-6.667A6.676 6.676 0 009 2.333a6.676 6.676 0 00-6.666 6.666z" clip-rule="evenodd"/></svg><span>
  526.                                     {{- clientTypeText|client_type|trans({}, 'client_types') -}}
  527.                                 </span></div> #}
  528.                             {%- endif -%}
  529.                             {%- set includeService = false -%}
  530.                         {%- endfor -%}
  531.                     </div>
  532.                 </div>
  533.             {%- endif -%}
  534.         </div>
  535.         {% endif %}
  536.         {# карта пк #}
  537.         <div class="profile-map profile-map--desktop white-round mb-4 skeleton">
  538.             <div class="profile-map-block" id="profile-map"></div>
  539.         </div>
  540.         {# ревью #}
  541.         {%- if feature('profile_comments') and not profile.deleted -%}
  542.             {%- set commentsCount = profile.comments|length -%}
  543.             <noindex>
  544.                 <div class="review profile-block d-flex white-round mb-4"
  545.                         data-user="{{ is_user_customer(app.user) ? 'true' : 'false' }}"
  546.                         data-url="{{ path('profile.comment.create', {profile: profile.id}) }}"
  547.                         data-reg-url="{{ path('app_security_register') }}"
  548.                         {% if comment_form is defined %}
  549.                             data-entity-id="{{ comment_form.entity_id.vars.id }}"
  550.                             data-mark="{{ comment_form.mark.vars.full_name }}"
  551.                             data-text="{{ comment_form.text.vars.id }}"
  552.                         {% endif %}
  553.                         id="comments"
  554.                 >
  555.                     <div class="review-heading d-flex-c mb-4">
  556.                         <h2 class="review-heading-title text-xl">ОТЗЫВЫ</h2>
  557.                         <div class="review-rating d-flex-c" {% if commentsCount > 0 %}itemscope itemtype="https://schema.org/AggregateRating"{% endif %} data-rating="{{ rating }}">
  558.                             {%- if commentsCount > 0 -%}
  559.                                 <meta itemprop="worstRating" content="1">
  560.                                 <meta itemprop="ratingValue" content="{{ rating }}">
  561.                                 <meta itemprop="bestRating" content="5">
  562.                                 <meta itemprop="reviewCount" content="{{ commentsCount }}">
  563.                             {%- endif -%}
  564.                             <div class="review-rating-text d-flex-c" itemprop="itemReviewed" itemscope itemtype="https://schema.org/Organization">
  565.                                 <meta itemprop="address" content="{{ profile.city.name }}" />
  566.                                 <meta itemprop="telephone" content="{{ profile.phoneNumber }}" />
  567.                                 <meta itemprop="name" content="Рейтинг анкеты {{ profile.name }}">
  568.                                 <span class="review-rating-value{{ commentsCount == 0 ? ' zero' : '' }} mr-1">
  569.                                     {{- rating -}}
  570.                                 </span>
  571.                                 <span class="review-rating-count">
  572.                                     по {{ commentsCount }} {{ commentsCount == 1 ? 'отзыву' : 'отзывам' -}}
  573.                                 </span>
  574.                             </div>
  575.                             <div class="rating-star-block d-flex-c">
  576.                                 {%- for i in 1..5 -%}
  577.                                     <svg width="24" height="25" class="rating-star{% if rating >= i %} active{% endif %}"><use xlink:href="#review-star"></use></svg>
  578.                                 {%- endfor -%}
  579.                             </div>
  580.                         </div>
  581.                     </div>
  582.                     <div class="review-comments d-flex">
  583.                         {%- if commentsCount > 0 -%}
  584.                             <div class="review-comments-list" id="review-comments-list">
  585.                                 {%- for comment in profile.comments -%}
  586.                                     {%- include 'ProfilePreview/comment.html.twig' -%}
  587.                                 {%- endfor -%}
  588.                             </div>
  589.                         {%- else -%}
  590.                             <div class="review-comments-list review-comments-list-empty" id="review-comments-list">
  591.                                 <span class="review-comments-list-empty-text">Пока отзывов нет. {% if not is_user_advertiser(app.user) %}Оставьте первый отзыв.{% endif %}</span>
  592.                             </div>
  593.                         {%- endif -%}
  594.                         {%- if not is_user_advertiser(app.user) -%}
  595.                             <div class="review-form skeleton" id="review-form">
  596.                                 {# {% include 'ProfilePreview/form-comment.html.twig' %} #}
  597.                             </div>
  598.                         {%- endif -%}
  599.                     </div>
  600.                 </div>
  601.             </noindex>
  602.         {%- endif -%}
  603.         {# 2 ссылки #}
  604.         {# {%- if profile.personParameters.hairColor and haveMetro -%}
  605.         <div class="two-links d-flex-c mb-4">
  606.             {%- if haveMetro -%}
  607.                 <a href="{{ path('profile_list.list_by_station', {'city': profile.city.uriIdentity, 'station': station_alt.uriIdentity}) }}" class="two-links-item d-flex-c">
  608.                     <svg class="two-links-icon" viewbox="0 0 48 49" width="48" height="49" fill="none"><path fill="#FF3F40" d="M16.875 22.156h-1.134v1.502h5.841v-1.502h-1.711l1.126-3.763L24 23.79l3.003-5.396 1.127 3.763h-1.712v1.502h5.84v-1.502h-1.154l-3.852-9.93L24 18.78l-3.274-6.552-3.85 9.93Z"/><path fill="#FF3F40" d="M24 4.97c-7.74 0-14 6.26-14 14 0 4.05 2.082 8.843 4.64 13.204 0 0 1.243 1.669 2.769.787 1.526-.881.806-2.627.806-2.627C15.853 26.351 14 22.182 14 18.971c0-5.52 4.48-10 10-10s10 4.48 10 10c0 5.76-8.677 17.124-12.917 22.504L24 44.971s14-15.5 14-26c0-7.74-6.26-14-14-14Z"/></svg>
  609.                     <span class="two-links-text">Все проститутки у метро <span class="two-links-text-highlight fw-700">{{ station_alt.name|trans }}</span></span>
  610.                 </a>
  611.                 {% if station_alt.name == '' %}
  612.                     <div class="d-none">
  613.                     station.name = {{ station_alt.name }}<br>
  614.                     station.uriIdentity = {{ station_alt.uriIdentity }}<br>
  615.                     station = {{ station_alt }}<br>
  616.                     </div>
  617.                 {% endif %}
  618.             {%- endif -%}
  619.             {%- if profile.personParameters.hairColor -%}
  620.                 <a href="{{ path('profile_list.list_by_hair_color', {'city': city.uriIdentity,'hairColor': profile.personParameters.hairColor|hair_color_uri|slugify}) }}" class="two-links-item d-flex-c">
  621.                     <svg class="two-links-icon" viewbox="0 0 48 49" width="48" height="49" fill="none"><path fill="#FF3F40" fill-rule="evenodd" d="M19.68 41.52c-.838 1.945-3.17 3.067-5.336 1.959-4.092-2.098-6.908-4.496-8.63-7.16-1.742-2.698-2.28-5.532-2.038-8.3.472-5.366 3.892-10.468 6.724-14.248 3.768-5.024 8.56-7.8 13.6-7.8 5.04 0 9.832 2.776 13.6 7.8 2.802 3.736 6.48 8.868 7.08 14.25.31 2.794-.2 5.664-2.016 8.388-1.788 2.684-4.746 5.08-9.076 7.17-2.166 1.046-4.476-.094-5.286-2.046-1.444.908-2.956 1.438-4.3 1.438-1.352 0-2.874-.536-4.324-1.45h.002ZM13.6 16.17c3.232-4.307 6.94-6.2 10.4-6.2s7.168 1.893 10.4 6.2c2.908 3.877 5.844 8.165 6.304 12.295.218 1.96-.13 3.866-1.368 5.726-1.252 1.876-3.502 3.84-7.336 5.714v-1.802c1.732-2.3 3-5.384 3-9.132 0-.766-.04-1.51-.122-2.226a2 2 0 0 0-1.968-1.774 9.002 9.002 0 0 1-8.85-7.954 2.019 2.019 0 0 0-2.536-1.694C16.736 16.69 13 21.78 13 28.97c0 3.748 1.268 6.832 3 9.132v1.728c-3.574-1.856-5.712-3.808-6.926-5.686-1.214-1.876-1.586-3.804-1.412-5.774.36-4.11 3.078-8.392 5.938-12.2Zm3.4 12.8c0-4.443 1.7-7.347 3.686-8.823A13.017 13.017 0 0 0 31 28.819c.024 2.816-.936 5.578-2.848 7.664-1.664 1.814-3.42 2.488-4.152 2.488-.732 0-2.486-.674-4.15-2.488C18.276 34.765 17 32.237 17 28.97Z" clip-rule="evenodd"/></svg>
  622.                     <span class="two-links-text">Все проститутки <span class="two-links-text-highlight fw-700">{{ profile.personParameters.hairColor|hair_color|trans({}, 'left_menu') }}</span></span>
  623.                 </a>
  624.             {%- endif -%}
  625.         </div>
  626.         {%- endif -%} #}
  627.         {# Реки? #}
  628.         <div id="recommendations">
  629.             {%- set excludeRecommendationProfileIds = [profile.id] -%}
  630.             {%- include 'Recommendations/_profile_recommendations.html.twig' with {componentClass: 'mobile'} -%}
  631.         </div>
  632.         {{ include('ProfilePreview/nearest_profiles.html.twig') }}
  633.         {# Популярные ссылки? #}
  634.         {# css removed #}
  635.         {# {%- include 'ProfilePreview/popular_links.html.twig' with {} -%} #}
  636.         {%- include 'ProfilePreview/components/mobile-contacts.partial.twig' with {template: 'profile'} -%}
  637.     </div>
  638. {%- endblock -%}
  639. {%- block javascripts -%}
  640.     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  641.     <script>
  642.         window.comment_data = {
  643.             'comment_create': '{{ path('profile.comment.create', {profile: profile.id}) }}',
  644.             'form_get': '{{ path('profile.comment.comment_form', {profile: profile.id}) }}',
  645.             'sitekey': "{{ ewz_recaptcha_site_key }}",
  646.             'registrationUrl': "{{ path('app_security_register') }}",
  647.             'avatar_anonymous': "{{ asset('assets/images/avatar-user-anonymous.svg') }}",
  648.             'avatar_default': "{{ asset('assets/images/default-user-avatar.svg') }}"
  649.         };
  650.         window._lD = {
  651.             setLastViewedListing: '{{ app.request.attributes.get('_route') }}',
  652.             cityUrl: "{{city.uriIdentity}}",
  653.         };
  654.         document.addEventListener('header:update', (event) => {
  655.             const userData = event.detail?.data;
  656.             if (userData.user && userData.role === 'advertiser') return;
  657.             {% include 'ProfileList/_favorite-button.partial.script.js' %}
  658.         });
  659.         window.siteData = {
  660.             stations: {
  661.                 {%- for station in stations() -%}
  662.                     "{{ station.name|trans }}": "{{ path('profile_list.list_by_station', {'city': station.city.uriIdentity, 'station': station.uriIdentity}) }}"{% if not loop.last %},{% endif %}
  663.                 {%- endfor -%}
  664.             }
  665.         };
  666.     </script>
  667.     {{- parent() -}}
  668.     <script>
  669.         (function() {
  670.             let isRenderRecommendationsWidget = false;
  671.             let isRenderBotWidget = false;
  672.             let isRenderRecentlyViewedWidget = false;
  673.             function loadWidgets() {
  674.                 try {
  675.                     if (!isRenderRecommendationsWidget) {
  676.                         isRenderRecommendationsWidget = true;
  677.                         //window.profileRecommendations.addViewedProfile({{ profile.id }})
  678.                         window.Recommendation.addViewedProfile({{ profile.id }})
  679.                     }
  680.                     // if (!isRenderBotWidget) {
  681.                     //     isRenderBotWidget = true;
  682.                     //     window.profileBotHelper.addViewedProfile({{ profile.id }});
  683.                     // }
  684.                     if (!isRenderRecentlyViewedWidget) {
  685.                         isRenderRecentlyViewedWidget = true;
  686.                         //window.recentlyViewed.addViewedProfile({{ profile.id }});
  687.                     }
  688.                 } catch (error) {
  689.                     console.error(error);
  690.                 }
  691.             }
  692.             document.addEventListener('DOMContentLoaded', function() {
  693.                 try {
  694.                     loadWidgets();
  695.                 } catch (error) {
  696.                     console.error(error);
  697.                 }
  698.                 function createMap(id) {
  699.                     new window.YandexMap({
  700.                         id:id,
  701.                         lat:"{{ profile.mapCoordinate.latitude | default(profile.city.mapCoordinate.latitude) }}",
  702.                         lon:"{{ profile.mapCoordinate.longitude | default(profile.city.mapCoordinate.longitude) }}",
  703.                         label:"{{ asset('assets/images/map-label.svg') }}"
  704.                     });
  705.                 }
  706.                 createMap('profile-map');
  707.                 document.addEventListener('click', (e) => {
  708.                     const mobileMap = e.target.closest('#show-map-btn');
  709.                     if (mobileMap) {
  710.                         mobileMap.parentElement.classList.toggle('active');
  711.                         createMap('profile-map-mobile');
  712.                     }
  713.                 });
  714.                 window.increase_views({{profile.id}});
  715.             });
  716.             {# document.addEventListener("recommendations:ready", function() {
  717.                 try {
  718.                     //loadWidgets();
  719.                 } catch (error) {
  720.                     console.error(error);
  721.                 }
  722.             }); #}
  723.         })();
  724.     </script>
  725.     {%- if not profile.deleted -%}
  726.         <script type="module">
  727.             import PhotoSwipeLightbox from 'https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe-lightbox.esm.min.js';
  728.             const [w,h] = [window.innerWidth * 0.9,  window.innerHeight * 0.9]
  729.             const options = {
  730.                 dataSource: [
  731.                     {%- set photo = profile|avatar -%}
  732.                     {%- if photo and photo.path -%}
  733.                         {
  734.                             src: '{{ responsive_asset(photo.path, 'profile_media', "fullsize", "jpg") }}',
  735.                             width: w,
  736.                             height: h,
  737.                             alt: 'Avatar'
  738.                         },
  739.                     {%- endif -%}
  740.                     {%- if profile.photos is defined and profile.photos|length > 0 -%}
  741.                         {%- for photo in profile.photos -%}
  742.                             {%- if photo.path -%}
  743.                                 {
  744.                                     src: '{{ responsive_asset(photo.path, "profile_media", "fullsize", "jpg") }}',
  745.                                     width: w,
  746.                                     height: h,
  747.                                     alt: 'Фото профиля {{loop.index}}'
  748.                                 },
  749.                             {%- endif -%}
  750.                         {%- endfor -%}
  751.                     {%- endif -%}
  752.                     {% if profile.selfies is defined %}
  753.                         {% for photo in profile.selfies %}
  754.                             {%- if photo.path -%}
  755.                                 {
  756.                                     src: '{{ responsive_asset(photo.path, "profile_media", "fullsize", "jpg") }}',
  757.                                     width: w,
  758.                                     height: h,
  759.                                     alt: 'Селфи профиля {{loop.index}}'
  760.                                 }{% if not loop.last %},{% endif %}
  761.                             {%- endif -%}
  762.                         {%- endfor -%}
  763.                     {%- endif -%}
  764.                 ],
  765.                 showHideAnimationType: 'none',
  766.                 pswpModule: () => import('https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe.esm.min.js'),
  767.             };
  768.             const lightbox = new PhotoSwipeLightbox(options);
  769.             lightbox.init();
  770.             const avatarEl = document.querySelector('.profile-avatar');
  771.             const mediaEl = document.querySelector('.profile-media');
  772.             if (avatarEl) avatarEl.classList.add('profile-avatar-loaded');
  773.             if (mediaEl) mediaEl.classList.add('profile-media-loaded');
  774.             ;[...document.querySelectorAll('a[data-gallery]')].forEach(element => {
  775.                 element.addEventListener('click', (e) => {
  776.                     e.preventDefault();
  777.                     const id = +e.currentTarget.getAttribute('data-index');
  778.                     lightbox.loadAndOpen(id); // defines start slide index
  779.                 })
  780.             });
  781.         </script>
  782.         <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe.min.css" integrity="sha512-LFWtdAXHQuwUGH9cImO9blA3a3GfQNkpF2uRlhaOpSbDevNyK1rmAjs13mtpjvWyi+flP7zYWboqY+8Mkd42xA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  783.     {%- endif -%}
  784. {%- endblock -%}
  785. {%- block iconsSet -%}
  786. <svg class="d-none" xmlns="http://www.w3.org/2000/svg">
  787.     <symbol id="service-green" viewBox="0 0 20 20">
  788.         <path fill="#27AE60" fill-rule="evenodd" d="M1.667 10c0-4.6 3.724-8.333 8.324-8.333 4.609 0 8.342 3.733 8.342 8.333s-3.733 8.333-8.341 8.333c-4.6 0-8.325-3.733-8.325-8.333ZM10 16.666A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333a6.65 6.65 0 0 1 5.003 2.26l-5.676 5.671-2.432-2.432-1.062 1.055 3.494 3.494 6.544-6.544A6.64 6.64 0 0 1 16.666 10 6.665 6.665 0 0 1 10 16.666Z" clip-rule="evenodd"/>
  789.     </symbol>
  790.     <symbol id="service-orange" viewBox="0 0 20 20">
  791.         <path fill="#FF6D03" fill-rule="evenodd" d="M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.724 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667Zm-2.909 5a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5Zm5.833 0a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5Zm-5.791 5c.583.991 1.641 1.666 2.875 1.666 1.233 0 2.291-.675 2.875-1.667h1.391a4.58 4.58 0 0 1-8.533 0h1.392ZM3.333 10A6.665 6.665 0 0 0 10 16.666 6.665 6.665 0 0 0 16.666 10 6.665 6.665 0 0 0 10 3.333 6.665 6.665 0 0 0 3.333 10Z" clip-rule="evenodd"/>
  792.     </symbol>
  793.     <symbol id="service-red" viewBox="0 0 20 20">
  794.         <path fill="#FF3F40" fill-rule="evenodd" d="M10 1.667A8.336 8.336 0 0 0 1.667 10c0 4.6 3.733 8.333 8.333 8.333S18.333 14.6 18.333 10 14.6 1.667 10 1.667Zm.833 7.5V5.832H9.166v3.333H5.833v1.667h3.333v3.333h1.667v-3.333h3.333V9.166h-3.333Zm-7.5.833A6.676 6.676 0 0 0 10 16.666 6.676 6.676 0 0 0 16.666 10 6.676 6.676 0 0 0 10 3.333 6.676 6.676 0 0 0 3.333 10Z" clip-rule="evenodd"/>
  795.     </symbol>
  796.     {# <symbol id="service-grey" viewBox="0 0 20 20">
  797.         <path fill="#A5A5A5" fill-rule="evenodd" d="M10 1.667A8.336 8.336 0 0 0 1.667 10c0 4.6 3.733 8.333 8.333 8.333S18.333 14.6 18.333 10 14.6 1.667 10 1.667ZM6 9h8v2H6V9Zm-2.667 1A6.676 6.676 0 0 0 10 16.666 6.676 6.676 0 0 0 16.667 10 6.676 6.676 0 0 0 10 3.333 6.676 6.676 0 0 0 3.333 10Z" clip-rule="evenodd"/>
  798.     </symbol> #}
  799.     <symbol id="service-include" viewBox="0 0 20 20">
  800.         <path fill="#333" d="M7.3 13.2L4 9.8l-1.2 1.1 4.6 4.7 10-10-1.1-1.2-8.9 8.8z"/>
  801.     </symbol>
  802.     <symbol id="profile-approved" viewBox="0 0 24 24">
  803.         <path fill="#27AE60" fill-rule="evenodd" d="m20.56 9.215 2.44 2.78-2.44 2.78.34 3.68-3.61.82-1.89 3.18-3.4-1.46-3.4 1.47-1.89-3.18-3.61-.82.34-3.69L1 11.995l2.44-2.79-.34-3.68 3.61-.81 1.89-3.18 3.4 1.46 3.4-1.46 1.89 3.18 3.61.82-.34 3.68ZM7.42 11.41l3.17 3.17L17.18 8l1.41 1.41-8 8L6 12.82l1.42-1.41Z" clip-rule="evenodd"/>
  804.     </symbol>
  805.     <symbol id="review-star" viewBox="0 0 24 25">
  806.         <path d="M11.326 19.987c.399-.303.95-.303 1.348 0l4.127 3.14c.864.656 2.06-.185 1.737-1.222l-1.626-5.218c-.141-.452.019-.945.4-1.228l4.236-3.15c.862-.641.41-2.012-.664-2.012h-5.101c-.489 0-.92-.319-1.064-.786l-1.655-5.366c-.323-1.049-1.805-1.049-2.128 0L9.28 9.51a1.114 1.114 0 0 1-1.064.786H3.116c-1.073 0-1.526 1.37-.664 2.011l4.237 3.151c.38.283.54.776.399 1.229l-1.626 5.217c-.323 1.037.873 1.878 1.737 1.221l4.127-3.14Z"/>
  807.     </symbol>
  808. </svg>
  809. {% endblock %}