{% extends 'ProfilePreview/grid.html.twig' %}
{% block title %}{{ seo_title() }}{% endblock %}
{% block metaDescription %}
<meta name="description" content="{{ seo_description() }}">
{% endblock %}
{% block navbar %}
{{ parent() }}
{% set excludeRecommendationProfileIds = [profile.id] %}
{% include 'Recommendations/_profile_recommendations.html.twig' %}
{% endblock %}
{% block mainContainer %}
<div class="row" alt="{{ profile.seo ? profile.seo.phone : '' }}">
<div class="col-3">
<div id="left_column_metric">
{% if not app.user or is_user_customer(app.user) %}
<div><a class="add-remove-favourite" data-action="remove" href="javascript:void(0);" style="display: {{ is_profile_in_favourites(profile) ? 'block' : 'none' }}">UNLIKE</a></div>
<div><a class="add-remove-favourite" data-action="add" style="display: {{ not is_profile_in_favourites(profile) ? 'block' : 'none' }}" {% if app.user %}href="javascript:void(0);"{% else %}href="javascript:alert('Чтобы сделать что-то зарегистрируйтесь');"{% endif %}>LIKE</a></div>
{% endif %}
<div class="row">
{% if profile.isApproved %} <b style="color:green;">APPROVED</b><br /> {% endif %}
{% if not profile.deleted %}
{% if profile.isModerationRejected %}
<img src="{{ asset('static/img/red-circle.png') }}" alt="{{ profile.seo ? profile.seo.phone : '' }}" width="150">
{% else %}
{% set photo = profile|avatar %}
{% if photo %}
<img src="{{ asset(photo.path, photo.type == 'photo' ? 'profile_media' : 'profile_media_avatar') }}" alt="{{ profile.seo ? profile.seo.phone : '' }}" width="150">
{% endif %}
{% endif %}
{% else %}
Фото-заглушка
{% endif %}
</div>
{% if false == profile.isModerationRejected and profile.photos|length > 0 %}
<div class="row">
{% if not profile.deleted %}
{% for photo in profile.photos %}
<div class="col-4">
<img src="{{ asset(photo.path, 'profile_media') }}" alt="" width="150">
</div>
{% endfor %}
{% endif %}
</div>
{% endif %}
{% if false == profile.isModerationRejected and profile.selfies|length > 0 %}
<div class="row">
{% if not profile.deleted %}
{% for photo in profile.selfies %}
{% if photo.main == false %}
<div class="col-4">
<img src="{{ asset(photo.path, 'profile_media_selfie') }}" alt="" width="150">
</div>
{% endif %}
{% endfor %}
{% endif %}
</div>
{% endif %}
{% if false == profile.isModerationRejected and not profile.deleted %}
<div class="row">
{% for video in profile.confirmedVideos | filter(video => video.previewPath) %}
<div class="col-4">
<video width="100%" controls poster="{{ asset(video.previewPath, 'profile_media', 'fullsize') }}">
<source src="{{ asset(video.path, 'profile_media', 'fullsize') }}" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
<div class="col-9">
<div id="center_column_metric">
<h5>{{ profile.name|trans }} {{ rating }}★
{% if not profile.deleted %}
{% if profile.isModerationRejected %}
<h3>Анкета отклонена модератором</h3>
{% else %}
{% if profile.active %}
<small><a href="tel:{{ profile.phoneNumber }}">{{ profile.phoneNumber }}</a></small>
{% endif %}
{% endif %}
{% else %}
Заглушка телефона
{% endif %}
</h5>
<dl>
<dt>{% trans %}Город{% endtrans %}</dt>
<dd>{{ profile.city.name|trans }}</dd>
<dt>{% trans %}Метро{% endtrans %}</dt>
<dd>
{% for station in profile.stations %}
<a href="{{ path('profile_list.list_by_station', {'city': profile.city.uriIdentity, 'station': station.uriIdentity}) }}">{{ station.name|trans }}</a>
{% if not loop.last %}, {% endif %}
{% endfor %}
</dd>
<dt>{% trans %}Район{% endtrans %}</dt>
<dd>
{% for station in profile.stations %}
{% set stationDistrict = station.district %}
{% if stationDistrict %}
{% set districtCounty = stationDistrict.county %}
{% if districtCounty %}
<a href="{{ path('profile_list.list_by_county', {'city': profile.city.uriIdentity, 'county': districtCounty.uriIdentity}) }}">{{ districtCounty.name|trans }}</a>
{% endif %}
{% endif %}
{% endfor %}
</dd>
{% if not profile.deleted %}
{% if not profile.isModerationRejected %}
<dt><strong>{% trans %}Телефон{% endtrans %}</strong></dt>
<dd><strong>{{ profile.phoneNumber }}</strong></dd>
{% endif %}
{% else %}
Заглушка телефона
{% endif %}
<dt>{% trans %}Возраст{% endtrans %}</dt>
<dd>{{ profile.personParameters.age }}</dd>
<dt>{% trans %}Рост{% endtrans %}</dt>
<dd>{{ profile.personParameters.height }}</dd>
<dt>{% trans %}Размер груди{% endtrans %}</dt>
<dd>{{ profile.personParameters.breastSize }}</dd>
<dt>{% trans %}Вес{% endtrans %}</dt>
<dd>{{ profile.personParameters.weight }}</dd>
<dt>{% trans %}Размер одежды{% endtrans %}</dt>
<dd>{{ profile.personParameters.clothSize }}</dd>
<dt>{% trans %}Телосложение{% endtrans %}</dt>
<dd>{{ profile.personParameters.bodyType|body_type|trans }}</dd>
<dt>{% trans %}Цвет волос{% endtrans %}</dt>
<dd>{{ profile.personParameters.hairColor|hair_color|trans }}</dd>
<dt>{% trans %}Интимная стрижка{% endtrans %}</dt>
<dd>{{ profile.personParameters.privateHaircut|private_haircut|trans }}</dd>
<dt>{% trans %}Национальность{% endtrans %}</dt>
<dd>{{ profile.personParameters.nationality|nationality|trans }}</dd>
<dt>{% trans %}Дата обновления{% endtrans %}</dt>
<dd>{{ profile.updatedAt|date }}</dd>
</dl>
<h6>{% trans %}О себе{% endtrans %}</h6>
<p>{{ profile.description|trans }}</p>
<h6>{% trans %}Предпочтения{% endtrans %}</h6>
{% for group, servicesGroup in services | filter((servicesGroup, group) => not profile.masseur or group not in masseurExcludeServiceGroups) %}
<p><strong>{{ group|service_group|trans({}, 'service_groups') }}</strong></p>
<ul>
{% for service in servicesGroup %}
{% set providedService = profile.providedService(service) %}
<li class="{% if providedService %}text-success{% else %}text-danger{% endif %}">
<a href="{{ path('profile_list.list_by_provided_service', {'city': profile.city.uriIdentity, 'service': service.uriIdentity}) }}">{{ service.name|trans }}</a></li>
{% if providedService %}
{% if feature('extended_profile_form') %}
{{ providedService.condition|provided_service_condition|trans({},'service_conditions') }}{% if providedService.condition == 3 %}, цена:{{ providedService.extraCharge }}{% endif %}
{% endif %}
{% if providedService.comment %}
Комментарий: {{ providedService.comment }}
{% endif %}
{% endif %}
{% endfor %}
</ul>
{% endfor %}
<h6>{% trans %}Отзывы{% endtrans %}</h6>
<div id="comments">
{% for comment in profile.comments %}
{% include 'ProfilePreview/comment.html.twig' %}
{% else %}
<p>{% trans %}Отзывов нет{% endtrans %}</p>
{% endfor %}
</div>
<div id="commentFormContainer">
</div>
<div id="recaptcha-container"></div>
{% if feature('extended_profile_form') %}
<div>
{% if profile.expressPricing %}
<b>Экспресс:</b>
{% if profile.expressPricing.provided %}
Да, стоимость{{ profile.expressPricing.price }}
{% else %}
Нет
{% endif %}
{% endif %}
</div>
{% endif %}
{% if profile.clientTypes %}
<div>
<b>Услуги для:</b>
{% for clientType in profile.clientTypes %}
{{ clientType|client_type|trans({}, 'client_types') }}<br>
{% endfor %}
</div>
{% endif %}
{% if feature('extended_profile_form') %}
<div>
{% if profile.messengers %}
<b>Мессенджеры</b><br>
<b>Telegram</b> {{ profile.messengers.telegram ? 'Да' : 'Нет' }}
<b>WhatsApp</b> {{ profile.messengers.whatsApp ? 'Да' : 'Нет' }}
{% endif %}
</div>
{% endif %}
{% if feature('extended_profile_form') %}
<div>
{% if profile.carPricing %}
<b>В машине:</b> {{ profile.carPricing.provided ? 'Да' : 'Нет' }}
{% endif %}
</div>
{% endif %}
{% if feature('extended_profile_form') %}
<div>
{% if profile.personParameters.tattoo is not null %}
<b>Тату:</b> {{ profile.personParameters.tattoo ? 'Да' : 'Нет' }}
{% endif %}
</div>
<div>
{% if profile.personParameters.piercing is not null %}
<b>Пирсинг:</b> {{ profile.personParameters.piercing ? 'Да' : 'Нет' }}
{% endif %}
</div>
{% endif %}
<div>
<b>Отвечаю на:</b>
{% for answeringTo in profile.phoneCallRestrictions.answeringTo %}
{{ answeringTo|answering_to|trans({}, 'phone_call_restrictions') }}<br>
{% endfor %}
</div>
</div>
</div>
{% include 'ProfilePreview/nearest_profiles.html.twig' %}
<div id="recentlyViewedProfiles"></div>
</div>
<script type="text/javascript">
var onloadCallback = function() {
grecaptcha.render('recaptcha-container', {
'sitekey' : '{{ ewz_recaptcha_site_key }}'
});
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
<script src="{{ asset('ajax.js', 'js_script') }}"></script>
<script src="{{ asset('local-storage.js', 'js_script') }}"></script>
<script src="{{ asset('recommendations.js', 'js_script') }}"></script>
<script src="{{ asset('bot-helper.js', 'js_script') }}"></script>
<script src="{{ asset('recently-viewed.js', 'js_script') }}"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
profileRecommendations.addViewedProfile({{ profile.id }});
profileBotHelper.addViewedProfile({{ profile.id }});
//достаем список, пока без учета текущей страницы, для текущего аякс запроса
const recentlyViewedProfiles = recentlyViewed.getViewedProfiles();
recentlyViewed.addViewedProfile({{ profile.id }});
//recently viewed profiles
ajax({
url: '{{ path('recent_profiles.recently_viewed.list') }}',
data: {
recently_viewed_profiles: recentlyViewedProfiles,
},
callback: function(response) {
if(!response)
return;
// console.log(response);
document.querySelector('#recentlyViewedProfiles').innerHTML = response;
},
dataType: 'json',
responseType: 'text/html',
});
ajax({
url: '{{ path('profile.comment.comment_form', {profile: profile.id}) }}',
callback: function(response) {
// console.log(response);
if('' !== response) {
document.querySelector('#commentFormContainer').innerHTML = response;
setCommentFormListeners();
}
},
dataType: 'json',
responseType: 'text/html',
});
function setCommentFormListeners() {
const formName = 'comment_form';
document.querySelector('#send_comment').addEventListener('click', function() {
ajax({
url: '{{ path('profile.comment.create', {profile: profile.id}) }}',
method: '',
data: {
'g-recaptcha-response': grecaptcha.getResponse(),
'entity_id': document.querySelector(`#${formName}_entity_id`).value,
'mark': document.querySelector(`input[name="${formName}[mark]"]:checked`).value,
'text': document.querySelector(`#${formName}_text`).value,
},
callback: function(response) {
if(response) {
if(response.success) {
//document.querySelector(`#{formName}`).style.display = 'none';
//document.querySelector('#send_comment').style.display = 'none';
document.querySelector(`form[name="${formName}"]`).reset();
grecaptcha.reset();
let template =
'<div>' +
(response.comment.nickname ?
'<span class="author">' +
'<img src="#avatar" alt="shift" width="25">' +
'<span class="name">#nickname</span>' +
'</span>' : '') +
'<span class="date">#createdAt</span>' +
'<span>#text</span>' +
'</div>'
;
response.comment.createdAt = new Date(response.comment.createdAt * 1000);
for(let k in response.comment) {
template = template.replace('#'+k, response.comment[k]);
}
document.querySelector('#comments').innerHTML += template;
// console.log(template);
// document.querySelector('#comments').innerHTML += response.html;
} else {
alert(response.error);
}
}
},
dataType: 'json',
responseType: 'json',
});
});
}
//LIKE/UNLIKE
document.querySelector('#left_column_metric').addEventListener('click', function(e) {
if(false == e.target.classList.contains('add-remove-favourite'))
return;
addRemoveFavourite(e.target.dataset['action'] == 'add');
});
let addRemoveFavourite = function(add) {
let btn = document.querySelector('.add-remove-favourite[data-action="' + (add ? 'add' : 'remove') + '"]');
let reverseBtn = document.querySelector('.add-remove-favourite[data-action="' + (!add ? 'add' : 'remove') + '"]');
btn.style.display = 'none';
ajax({
url: add ? '{{ path('account.favourites.add', {profile: profile.id}) }}' : '{{ path('account.favourites.remove', {profile: profile.id}) }}',
callback: function(response) {
if(response) {
if(response.success) {
reverseBtn.style.display = 'block';
} else {
btn.style.display = 'block';
alert(response.error);
}
}
},
dataType: 'json',
responseType: 'json',
});
};
//LIKE/UNLIKE end
});
</script>
{% endblock %}