{% extends 'role/user/ticket/index.html.twig' %}
{% block title %}Ticket - Ricerca{% endblock %}
{% block pageTitleH1 %}Ticket - Ricerca{% endblock %}
{% block pageTitleBreadcrumb %}
<li class="breadcrumb-item"><a href="{{ path ('user_tickets') }}">Ticket</a></li>
<li class="breadcrumb-item"><a href="javascript:void(0)">Ricerca</a></li>
{% endblock %}
{% block subMenuLeft %}
<li class="nav-item"><a class="nav-link" href="{{ path ('user_tickets') }}">Ticket</a></li>
{% endblock %}
{% block content %}
{% set first = true %}
{% set filterStatusString = '' %}
{% for ts in ticketStatuses %}
{% if ts.id in filters.status %}
{% if first %}{% set first = false %}{% else %}{% set filterStatusString = filterStatusString ~ ', ' %}{% endif %}
{% set filterStatusString = filterStatusString ~ ts.value %}
{% endif %}
{% endfor %}
<section class="m_tb_50p p_lr_30p">
<div class="row">
<div class="col-12">
<h3 class="form_title">Ricerca tra i ticket ({{ ticketsCount }})
<a href="{{ path ('user_ticket_search_filter_export') }}" class="button button-3d button-mini button-pr f_right m_b_none"><i class="icon-file-excel d-block d-lg-none m_r_none" data-bs-toggle="tooltip" title="Esporta filtrati"></i><span class="d-none d-lg-block">Esporta filtrati</span></a>
</h3>
<hr class="m_t_none">
</div>
<div class="col-12 overflow_a">
<table class="table table-bordered table-hover font_12">
<thead>
<tr>
<form method="get" action="{{ path ('user_ticket_search') }}" id="formFilter">
<td class="td_action"><a href="{{ path ('remove_filter', {'route':app.request.attributes.get('_route'), 'route_params':app.request.attributes.get('_route_params') }) }}" class="f_right" data-bs-toggle="tooltip" title="Escludi filtro"><img class="icon_red" src="{{ asset (icon_delete) }}"></a></td>
<td class="td_w_80p">
<input type="text" id="input_status_filter" class="form-control font_12" style="height: 38px" value="{{ filterStatusString }}" readonly onClick="filterStatusModalOpen()"/>
<input type="hidden" id="input_status" name="status" value="{{ filters.status }}">
</td>
<td><input type="text" class="form-control" inputmode="search" name="number" value="{{ filters.number|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="termid" value="{{ filters.termid|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="client" value="{{ filters.client|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_operation_value_1" readonly onClick="filterOperations1()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_operation_id_1" name="operation" value="{{ filters.operation|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_supplier_value_1" readonly onClick="filterSuppliers1()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_supplier_id_1" name="supplier" value="{{ filters.supplier|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="tariff" value="{{ filters.tariff|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="city" value="{{ filters.city|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="province" value="{{ filters.province|default() }}"/></td>
{% if app.user.accountTypology != 'technician' %}<td><input type="text" class="form-control" inputmode="search" name="technician" value="{{ filters.technician|default() }}"/></td>{% endif %}
<td><input type="text" class="form-control daterange font_12" inputmode="search" id="daterange1" autocomplete="off" name="datetimeStart" style="height: 38px" date-filter="range"/></td>
<td><input type="text" class="form-control daterange font_12" inputmode="search" id="daterange2" autocomplete="off" name="datetimeEnd" style="height: 38px" date-filter="range"/></td>
<td><input type="text" class="form-control daterange font_12" inputmode="search" id="daterange3" autocomplete="off" name="datetimeExpiration" style="height: 38px" date-filter="range"/></td>
<td class="td_w_90p"><input type="text" class="form-control" inputmode="search" name="waybill" value="{{ filters.waybill|default() }}"/></td>
<td class="td_action"><button type="submit" class="btn bg_w f_left p_0p" data-bs-toggle="tooltip" title="Filtra"><img class="icon_green" src="{{ asset (icon_search) }}"></button></td>
<input id="sort_field" type="hidden" name="sortField" value="{{ filters.sortField|default() }}"/>
<input id="sort_order" type="hidden" name="sortOrder" value="{{ filters.sortOrder|default() }}"/>
</form>
</tr>
<tr class="bg_pr color_w">
<th></th>
<th class="td_w_120p">Stato<button type="button" onClick="setOrderBy1('ts.value')" data-orderField="ts.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_120p">N°<button type="button" onClick="setOrderBy1('t.number')" data-orderField="t.number" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_120p">Termid<button type="button" onClick="setOrderBy1('tt.code')" data-orderField="tt.code" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Cliente<button type="button" onClick="setOrderBy1('c.nickname')" data-orderField="c.nickname" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Operazione <i style="font-weight:400">(Dettagli)</i><button type="button" onClick="setOrderBy1('o.value')" data-orderField="o.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Fornitore <i style="font-weight:400">(SLOT)</i><button type="button" onClick="setOrderBy1('s.name')" data-orderField="s.name" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Tariffa<button type="button" onClick="setOrderBy1('ot.value')" data-orderField="ot.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_180p">Città <i style="font-weight:400">(Indirizzo)</i><button type="button" onClick="setOrderBy1('t.idCity')" data-orderField="t.idCity" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_70p txt_a_c">Prov<button type="button" onClick="setOrderBy1('t.idProvince')" data-orderField="t.idProvince" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% if app.user.accountTypology != 'technician' %}<th class="td_w_150p">Tecnico<button type="button" onClick="setOrderBy1('p.surname')" data-orderField="p.surname" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>{% endif %}
<th class="td_w_140p txt_a_c">Data/Ora ricezione<button type="button" onClick="setOrderBy1('t.datetimeStart')" data-orderField="t.datetimeStart" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_140p txt_a_c">Data/Ora chiusura<button type="button" onClick="setOrderBy1('t.datetimeEnd')" data-orderField="t.datetimeEnd" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_140p txt_a_c">Data/Ora scadenza<button type="button" onClick="setOrderBy1('t.datetimeExpiration')" data-orderField="t.datetimeExpiration" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="txt_a_c" colspan="2">Lettera di vettura<button type="button" onClick="setOrderBy1('t.waybill')" data-orderField="t.waybill" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
</tr>
</thead>
<tbody>
{% if tickets|length > 0 %}
{% for ticket in tickets %}
<tr>
<td><a href="{{ path ('user_ticket_sheet', {'ticketId':ticket.id}) }}"><img class="icon_action icon_pr" data-bs-toggle="tooltip" title="Scheda" src="{{ asset(icon_sheet) }}"></a></td>
<td>{{ ticket.displayStatus('string')|raw }}</td>
<td>{{ ticket.number }}</td>
<td>{{ ticket.termid }}</td>
<td>{{ ticket.client }}</td>
<td>{{ ticket.operation.value }}{% if ticket.operation.getKeyValueByValue('Dettagli operazione') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) != null %}<br><i>({{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) }})</i>{% endif %}</td>
<td>{{ ticket.supplier }}{% if ticket.displayJsonValueByColumn('SLOT') != null %}<br><i>({{ ticket.displayJsonValueByColumn('SLOT') }})</i>{% endif %}</td>
<td>{{ ticket.operationTariffAmount.value|default() }}</td>
<td>{% if ticket.idCity != null %}{{ ticket.idCity|translate_city_only }}<br><i>{{ ticket.address }}</i>{% endif %}</td>
<td class="txt_a_c">{% if ticket.idCity != null %}{{ ticket.idCity|translate_province_sign_from_city }}{% endif %}</td>
{% if app.user.accountTypology != 'technician' %}<td>{{ ticket.technician }}</td>{% endif %}
<td class="txt_a_c">{{ ticket.datetimeStart|date('d-m-Y H:i') }}</td>
<td class="txt_a_c">{% if ticket.datetimeEnd != null %}{{ ticket.datetimeEnd|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
<td class="txt_a_c">{% if ticket.datetimeExpiration != null %}{{ ticket.datetimeExpiration|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
<td class="txt_a_c" colspan="2">{{ ticket.waybill }}</td>
</tr>
{% endfor %}
{% else %}
{% include 'components/twig/notice_filter_no_match.html.twig' %}
{% endif %}
</tbody>
</table>
</div>
<div class="col-12 navigation txt_a_r">
{{ knp_pagination_render(tickets) }}
</div>
</div>
</section>
<div id="filterStatusModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Seleziona stati da visualizzare</h3></div>
<div class="modal-body">
<table class="table table_no_padding m_b_none b_none">
{% for ts in ticketStatuses %}
<tr>
<td class="td_w_40p"><input class="switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox" id="switch_{{ ts.id }}"><label class="m_auto" for="switch_{{ ts.id }}"></label></td>
<td><label class="m_b_none l_s_none f_w_500" id="label_{{ ts.id }}">{{ ts.value }}</label></td>
</tr>
{% endfor %}
</table>
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<a href="javascript:filterStatusUpdate()" class="button button-3d button-mini button-green f_right">Conferma</a>
</div>
</div>
</div>
</div>
{% include 'components/modals/filter_supplier.html.twig' with {'number':1, 'suppliers':suppliers} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':1, 'operations':operations} %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% include 'components/js/sort_js.html.twig' with {'number':1, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field', 'sort_order':'sort_order', 'formName':'formFilter', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':1, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':1, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange3', 'format':'DD-MM-YYYY HH:mm'} %}
<script>
$(document).ready(function(){
{% if filters.datetimeStart != null %}
document.getElementById('daterange1').value = "{{ filters.datetimeStart }}";
{% else %}
document.getElementById('daterange1').value = null;
{% endif %}
{% if filters.datetimeEnd != null %}
document.getElementById('daterange2').value = "{{ filters.datetimeEnd }}";
{% else %}
document.getElementById('daterange2').value = null;
{% endif %}
{% if filters.datetimeExpiration != null %}
document.getElementById('daterange3').value = "{{ filters.datetimeExpiration }}";
{% else %}
document.getElementById('daterange3').value = null;
{% endif %}
});
function filterStatusModalOpen(){
if(document.getElementById('input_status').value != ''){
var ids = document.getElementById('input_status').value.split('-');
for(var i=0; i<ids.length; i++){
document.getElementById('switch_' + ids[i]).checked = true;
}
}
$('#filterStatusModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function filterStatusUpdate(){
var ids = '';
var string = '';
var first = true;
{% for ts in ticketStatuses %}
if(document.getElementById('switch_{{ ts.id }}').checked){
if(first)
first = false;
else{
ids += '-';
string += ', ';
}
ids += '{{ ts.id }}';
string += '{{ ts.value }}';
}
{% endfor %}
document.getElementById('input_status').value = ids;
document.getElementById('input_status_filter').value = string;
$('#filterStatusModal').modal("hide");
}
</script>
{% endblock %}