... | ... |
@@ -20,19 +20,19 @@ |
20 | 20 |
</div> |
21 | 21 |
<div class="tl_filter tl_subpanel"> |
22 | 22 |
<strong>Filter:</strong> |
23 |
- <select name="tl_day" id="tl_day" class="tl_select tl_chosen"> |
|
23 |
+ <select name="tl_day" id="tl_day" class="tl_select tl_chosen{% if filter.day.selected is defined %} active{% endif %}"> |
|
24 | 24 |
<option value=""{{ filter.day.selected is not defined or not filter.day.selected ? ' selected' : '' }}>Tag</option> |
25 | 25 |
{% for value, label in filter.day.options %} |
26 | 26 |
<option value="{{ value }}"{{ filter.day.selected is defined and filter.day.selected == value ? ' selected' : '' }}>{{ label }}</option> |
27 | 27 |
{% endfor %} |
28 | 28 |
</select> |
29 |
- {#<select name="tl_month" id="tl_month" class="tl_select tl_chosen"> |
|
29 |
+ {#<select name="tl_month" id="tl_month" class="tl_select tl_chosen{% if filter.month.selected is defined %} active{% endif %}"> |
|
30 | 30 |
<option value=""{{ filter.month.selected is not defined or not filter.month.selected ? ' selected' : '' }}>Monat</option> |
31 | 31 |
{% for value, label in filter.month.options %} |
32 | 32 |
<option value="{{ value }}"{{ filter.month.selected is defined and filter.month.selected == value ? ' selected' : '' }}>{{ label }}</option> |
33 | 33 |
{% endfor %} |
34 | 34 |
</select>#} |
35 |
- <select name="tl_standort" id="tl_standort" class="tl_select tl_chosen"> |
|
35 |
+ <select name="tl_standort" id="tl_standort" class="tl_select tl_chosen{% if filter.standort.selected is defined %} active{% endif %}"> |
|
36 | 36 |
<option value=""{{ filter.standort.selected is not defined or not filter.standort.selected ? ' selected' : '' }}>Standort</option> |
37 | 37 |
{% for value, label in filter.standort.options %} |
38 | 38 |
<option value="{{ value }}"{{ filter.standort.selected is defined and filter.standort.selected == value ? ' selected' : '' }}>{{ label }}</option> |
... | ... |
@@ -23,6 +23,7 @@ use Contao\System; |
23 | 23 |
use Doctrine\DBAL\Connection; |
24 | 24 |
use Symfony\Component\HttpFoundation\RequestStack; |
25 | 25 |
use Symfony\Component\HttpFoundation\Response; |
26 |
+use Symfony\Component\HttpFoundation\Session\SessionInterface; |
|
26 | 27 |
use Symfony\Component\Routing\Annotation\Route; |
27 | 28 |
use Symfony\Contracts\Translation\TranslatorInterface; |
28 | 29 |
use Twig\Environment as TwigEnvironment; |
... | ... |
@@ -71,50 +72,70 @@ class WeinanlieferungBookingsController extends AbstractController |
71 | 72 |
System::loadLanguageFile('default'); |
72 | 73 |
|
73 | 74 |
// Filter |
74 |
- if (Input::post('FORM_SUBMIT') === 'tl_filters' && Input::post('filter_reset') === null) |
|
75 |
+ /** @var SessionInterface $objSession */ |
|
76 |
+ $objSession = \System::getContainer()->get('session'); |
|
77 |
+ |
|
78 |
+ $session = $objSession->get('filter'); |
|
79 |
+ |
|
80 |
+ if (Input::post('FORM_SUBMIT') === 'tl_filters') |
|
75 | 81 |
{ |
76 |
- $queryBuilder = $this->db->createQueryBuilder() |
|
77 |
- ->select('id') |
|
78 |
- ->from(WeinanlieferungSlotsModel::getTable()); |
|
82 |
+ $arrFilterFields = ['tl_day', 'tl_standort', 'tl_status']; |
|
79 | 83 |
|
80 |
- if (!empty(Input::post('tl_day')) && is_numeric(Input::post('tl_day'))) |
|
84 |
+ foreach ($arrFilterFields as $v) |
|
81 | 85 |
{ |
82 |
- $Day = new Date(Input::post('tl_day')); |
|
83 |
- $arrData['filter']['day']['selected'] = Input::post('tl_day'); |
|
84 |
- $queryBuilder->andWhere('date BETWEEN :day_start AND :day_end') |
|
85 |
- ->setParameter('day_start', $Day->dayBegin) |
|
86 |
- ->setParameter('day_end', $Day->dayEnd); |
|
87 |
- } else { |
|
88 |
- $Today = new Date(); |
|
89 |
- $queryBuilder->andWhere("time >= :today") |
|
90 |
- ->setParameter('today',$Today->dayBegin); |
|
86 |
+ if ($v == Input::post($v) || Input::post('filter_reset') == '1') |
|
87 |
+ { |
|
88 |
+ unset($session['tl_vr_wa_reservation'][$v]); |
|
89 |
+ } // Apply the filter |
|
90 |
+ else |
|
91 |
+ { |
|
92 |
+ $session['tl_vr_wa_reservation'][$v] = Input::post($v); |
|
93 |
+ } |
|
91 | 94 |
} |
95 |
+ $objSession->set('filter', $session); |
|
96 |
+ } |
|
92 | 97 |
|
93 |
- /*if (!empty(Input::post('tl_month')) && is_numeric(Input::post('tl_month'))) |
|
94 |
- { |
|
95 |
- $Month = new Date(Input::post('tl_month')); |
|
96 |
- $arrData['filter']['month']['selected'] = Input::post('tl_month'); |
|
97 |
- $queryBuilder->andWhere('date BETWEEN :month_start AND :month_end') |
|
98 |
- ->setParameter('month_start', $Month->monthBegin) |
|
99 |
- ->setParameter('month_end', $Month->monthEnd); |
|
100 |
- } else { |
|
101 |
- $Today = new Date(); |
|
102 |
- $queryBuilder->andWhere("time >= :today") |
|
103 |
- ->setParameter('today',$Today->dayBegin); |
|
104 |
- }*/ |
|
98 |
+ $queryBuilder = $this->db->createQueryBuilder() |
|
99 |
+ ->select('id') |
|
100 |
+ ->from(WeinanlieferungSlotsModel::getTable()); |
|
105 | 101 |
|
106 |
- if (!empty(Input::post('tl_standort')) && is_numeric(Input::post('tl_standort'))) |
|
107 |
- { |
|
108 |
- $Month = new Date(Input::post('tl_standort')); |
|
109 |
- $arrData['filter']['standort']['selected'] = Input::post('tl_standort'); |
|
110 |
- $queryBuilder->andWhere('pid = :pid') |
|
111 |
- ->setParameter('pid', (int) Input::post('tl_standort')); |
|
112 |
- } |
|
102 |
+ if (!empty($session['tl_vr_wa_reservation']['tl_day']) && is_numeric($session['tl_vr_wa_reservation']['tl_day'])) |
|
103 |
+ { |
|
104 |
+ $Day = new Date($session['tl_vr_wa_reservation']['tl_day']); |
|
105 |
+ $arrData['filter']['day']['selected'] = $session['tl_vr_wa_reservation']['tl_day']; |
|
106 |
+ $queryBuilder->andWhere('date BETWEEN :day_start AND :day_end') |
|
107 |
+ ->setParameter('day_start', $Day->dayBegin) |
|
108 |
+ ->setParameter('day_end', $Day->dayEnd); |
|
109 |
+ } else { |
|
110 |
+ $Today = new Date(); |
|
111 |
+ $queryBuilder->andWhere("time >= :today") |
|
112 |
+ ->setParameter('today',$Today->dayBegin); |
|
113 |
+ } |
|
113 | 114 |
|
114 |
- $arrSlots = $queryBuilder->fetchFirstColumn(); |
|
115 |
+ /*if (!empty(Input::post('tl_month')) && is_numeric(Input::post('tl_month'))) |
|
116 |
+ { |
|
117 |
+ $Month = new Date(Input::post('tl_month')); |
|
118 |
+ $arrData['filter']['month']['selected'] = Input::post('tl_month'); |
|
119 |
+ $queryBuilder->andWhere('date BETWEEN :month_start AND :month_end') |
|
120 |
+ ->setParameter('month_start', $Month->monthBegin) |
|
121 |
+ ->setParameter('month_end', $Month->monthEnd); |
|
122 |
+ } else { |
|
123 |
+ $Today = new Date(); |
|
124 |
+ $queryBuilder->andWhere("time >= :today") |
|
125 |
+ ->setParameter('today',$Today->dayBegin); |
|
126 |
+ }*/ |
|
115 | 127 |
|
128 |
+ if (!empty($session['tl_vr_wa_reservation']['tl_standort']) && is_numeric($session['tl_vr_wa_reservation']['tl_standort'])) |
|
129 |
+ { |
|
130 |
+ $Month = new Date($session['tl_vr_wa_reservation']['tl_standort']); |
|
131 |
+ $arrData['filter']['standort']['selected'] = $session['tl_vr_wa_reservation']['tl_standort']; |
|
132 |
+ $queryBuilder->andWhere('pid = :pid') |
|
133 |
+ ->setParameter('pid', (int) $session['tl_vr_wa_reservation']['tl_standort']); |
|
116 | 134 |
} |
117 | 135 |
|
136 |
+ $arrSlots = $queryBuilder->fetchFirstColumn(); |
|
137 |
+ |
|
138 |
+ |
|
118 | 139 |
$arrDayOptions = []; |
119 | 140 |
$DayRequest = $this->db->executeQuery("SELECT s.date, DATE_FORMAT(FROM_UNIXTIME(s.date),'%d.%m.%Y') as 'day_label' FROM tl_vr_wa_reservation r INNER JOIN tl_vr_wa_slot s ON s.id = r.pid GROUP BY day_label ORDER BY s.date ASC"); |
120 | 141 |
|