... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
{% block filter %} |
4 | 4 |
<form hx-get="{{ pageUrl is defined ? pageUrl : '' }}" hx-push-url="true" hx-headers='{"VR-Ajax": "WaSlotsModule"}' hx-trigger="change, submit" hx-target="closest .content-wrapper" class="filter"> |
5 |
- <div class="row"> |
|
5 |
+ <div class="row u-justify-center"> |
|
6 | 6 |
<div class="col-md-2 kapazitaet"> |
7 | 7 |
<select name="filter_kapazitaet"> |
8 | 8 |
<option value="">-- Kapazität --</option> |
... | ... |
@@ -19,6 +19,14 @@ |
19 | 19 |
{% endfor %} |
20 | 20 |
</select> |
21 | 21 |
</div> |
22 |
+ <div class="col-md-2 day"> |
|
23 |
+ <select name="filter_tag"> |
|
24 |
+ <option value="">-- Datum --</option> |
|
25 |
+ {% for key, option in filter.tag.options %} |
|
26 |
+ <option value="{{ key }}"{% if filter.tag.selected is defined and filter.tag.selected == key %} selected{% endif %}>{{ option }}</option> |
|
27 |
+ {% endfor %} |
|
28 |
+ </select> |
|
29 |
+ </div> |
|
22 | 30 |
{#<div class="col-md-2 ernteart"> |
23 | 31 |
<select name="filter_ernteart"> |
24 | 32 |
<option value="">-- Ernteart --</option> |
... | ... |
@@ -24,6 +24,7 @@ use Contao\PageModel; |
24 | 24 |
use Contao\StringUtil; |
25 | 25 |
use Contao\System; |
26 | 26 |
use Contao\Template; |
27 |
+use Doctrine\DBAL\Connection; |
|
27 | 28 |
use Symfony\Component\HttpFoundation\Request; |
28 | 29 |
use Symfony\Component\HttpFoundation\Response; |
29 | 30 |
use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLeseartModel; |
... | ... |
@@ -41,9 +42,12 @@ class WeinanlieferungSlotsListModuleController extends AbstractFrontendModuleCon |
41 | 42 |
|
42 | 43 |
private $insertTagParser; |
43 | 44 |
|
44 |
- public function __construct(InsertTagParser $insertTagParser) |
|
45 |
+ private $db; |
|
46 |
+ |
|
47 |
+ public function __construct(InsertTagParser $insertTagParser, Connection $connection) |
|
45 | 48 |
{ |
46 | 49 |
$this->insertTagParser = $insertTagParser; |
50 |
+ $this->db = $connection; |
|
47 | 51 |
} |
48 | 52 |
|
49 | 53 |
|
... | ... |
@@ -56,7 +60,7 @@ class WeinanlieferungSlotsListModuleController extends AbstractFrontendModuleCon |
56 | 60 |
$arrData = $template->getData(); |
57 | 61 |
$arrOptions = []; |
58 | 62 |
|
59 |
- // Add filter values |
|
63 |
+ // Add filter sql |
|
60 | 64 |
if (!empty($_GET['filter_kapazitaet'])) |
61 | 65 |
{ |
62 | 66 |
$arrData['filter']['kapazitaet']['selected'] = $_GET['filter_kapazitaet']; |
... | ... |
@@ -69,6 +73,13 @@ class WeinanlieferungSlotsListModuleController extends AbstractFrontendModuleCon |
69 | 73 |
$arrOptions['column'][] = 'pid = ?'; |
70 | 74 |
$arrOptions['value'][] = $_GET['filter_standort']; |
71 | 75 |
} |
76 |
+ if (!empty($_GET['filter_tag']) && ($Tag = new Date($_GET['filter_tag']))) |
|
77 |
+ { |
|
78 |
+ $arrData['filter']['tag']['selected'] = $_GET['filter_tag']; |
|
79 |
+ $arrOptions['column'][] = 'tl_vr_wa_slot.time BETWEEN ? and ?'; |
|
80 |
+ $arrOptions['value'][] = $Tag->dayBegin; |
|
81 |
+ $arrOptions['value'][] = $Tag->dayEnd; |
|
82 |
+ } |
|
72 | 83 |
if (!empty($_GET['filter_ernteart'])) |
73 | 84 |
{ |
74 | 85 |
$arrData['filter']['ernteart']['selected'] = $_GET['filter_ernteart']; |
... | ... |
@@ -93,34 +104,11 @@ class WeinanlieferungSlotsListModuleController extends AbstractFrontendModuleCon |
93 | 104 |
} |
94 | 105 |
} |
95 | 106 |
|
96 |
- $arrData['filter']['kapazitaet']['options'] = range(1,30); |
|
97 |
- |
|
98 |
- if (($Standorte = WeinanlieferungStandortModel::findBy(["id IN (".implode(',',$standortIds).")"],null,['order'=>'title ASC'])) !== null) |
|
99 |
- { |
|
100 |
- $arrData['filter']['standort']['options'] = array_combine($Standorte->fetchEach('id'),$Standorte->fetchEach('title')); |
|
101 |
- } |
|
102 |
- |
|
103 |
- if (isset($GLOBALS['TL_DCA']['tl_vr_wa_slot']['fields']['ernteart']['options'])) |
|
104 |
- { |
|
105 |
- foreach ($GLOBALS['TL_DCA']['tl_vr_wa_slot']['fields']['ernteart']['options'] as $ernteart) |
|
106 |
- { |
|
107 |
- $arrData['filter']['ernteart']['options'][$ernteart] = $GLOBALS['TL_LANG']['REF']['wa_ernteart'][$ernteart] ?? $ernteart; |
|
108 |
- } |
|
109 |
- } |
|
110 |
- |
|
111 |
- if (($Sorten = WeinanlieferungRebsorteModel::findAll(['order'=>'title ASC'])) !== null) |
|
112 |
- { |
|
113 |
- $arrData['filter']['sorte']['options'] = array_combine($Sorten->fetchEach('id'),$Sorten->fetchEach('title')); |
|
114 |
- } |
|
115 |
- |
|
116 |
- if (($Leseart = WeinanlieferungLeseartModel::findAll(['order'=>'title ASC'])) !== null) |
|
117 |
- { |
|
118 |
- $arrData['filter']['leseart']['options'] = array_combine($Leseart->fetchEach('id'),$Leseart->fetchEach('title')); |
|
119 |
- } |
|
120 |
- |
|
121 | 107 |
// Get available slots |
122 | 108 |
if (($slots = WeinanlieferungSlotsModel::findMultiplePublishedByPids($standortIds,$arrOptions)) !== null) |
123 | 109 |
{ |
110 |
+ $slotIds = $slots->fetchEach('id'); |
|
111 |
+ |
|
124 | 112 |
/** @var WeinanlieferungSlotsModel $slot */ |
125 | 113 |
foreach ($slots as $slot) |
126 | 114 |
{ |
... | ... |
@@ -168,6 +156,43 @@ class WeinanlieferungSlotsListModuleController extends AbstractFrontendModuleCon |
168 | 156 |
'gebucht' => (boolean) WeinanlieferungReservationModel::countBy(["uid = ?","pid = ?"],[FrontendUser::getInstance()->id,$slot->id]) |
169 | 157 |
]); |
170 | 158 |
} |
159 |
+ |
|
160 |
+ // Get filter values |
|
161 |
+ $result = $this->db->executeQuery("SELECT MAX(behaelter) as 'kapazitaet' FROM tl_vr_wa_slot WHERE id IN (".implode(',',$slotIds).")"); |
|
162 |
+ $intMaxKapazitaet = $result->fetchOne(); |
|
163 |
+ $arrData['filter']['kapazitaet']['options'] = range(1,max(1,$intMaxKapazitaet)); |
|
164 |
+ |
|
165 |
+ if (($Standorte = WeinanlieferungStandortModel::findBy(["id IN (".implode(',',$standortIds).")","id IN (SELECT tl_vr_wa_slot.pid FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id IN (".implode(',',$slotIds)."))"],null,['order'=>'title ASC'])) !== null) |
|
166 |
+ { |
|
167 |
+ $arrData['filter']['standort']['options'] = array_combine($Standorte->fetchEach('id'),$Standorte->fetchEach('title')); |
|
168 |
+ } |
|
169 |
+ |
|
170 |
+ $slots->reset(); |
|
171 |
+ foreach ($slots as $slot) |
|
172 |
+ { |
|
173 |
+ $Tag = new Date($slot->time); |
|
174 |
+ $arrData['filter']['tag']['options'][$Tag->dayBegin] = Date::parse(Date::getNumericDateFormat(),$Tag->dayBegin); |
|
175 |
+ } |
|
176 |
+ |
|
177 |
+ /*if (isset($GLOBALS['TL_DCA']['tl_vr_wa_slot']['fields']['ernteart']['options'])) |
|
178 |
+ { |
|
179 |
+ foreach ($GLOBALS['TL_DCA']['tl_vr_wa_slot']['fields']['ernteart']['options'] as $ernteart) |
|
180 |
+ { |
|
181 |
+ $arrData['filter']['ernteart']['options'][$ernteart] = $GLOBALS['TL_LANG']['REF']['wa_ernteart'][$ernteart] ?? $ernteart; |
|
182 |
+ } |
|
183 |
+ } |
|
184 |
+ |
|
185 |
+ if (($Sorten = WeinanlieferungRebsorteModel::findAll(['order'=>'title ASC'])) !== null) |
|
186 |
+ { |
|
187 |
+ $arrData['filter']['sorte']['options'] = array_combine($Sorten->fetchEach('id'),$Sorten->fetchEach('title')); |
|
188 |
+ } |
|
189 |
+ |
|
190 |
+ if (($Leseart = WeinanlieferungLeseartModel::findAll(['order'=>'title ASC'])) !== null) |
|
191 |
+ { |
|
192 |
+ $arrData['filter']['leseart']['options'] = array_combine($Leseart->fetchEach('id'),$Leseart->fetchEach('title')); |
|
193 |
+ }*/ |
|
194 |
+ |
|
195 |
+ |
|
171 | 196 |
} |
172 | 197 |
|
173 | 198 |
// Add page URL |