... | ... |
@@ -20,8 +20,11 @@ |
20 | 20 |
</div> |
21 | 21 |
<div class="tl_sorting tl_subpanel"> |
22 | 22 |
<strong>Filter:</strong> |
23 |
- <select name="tl_sort" id="tl_sort" class="tl_select tl_chosen"> |
|
24 |
- <option value="title" selected="selected">Monat</option> |
|
23 |
+ <select name="tl_month" id="tl_month" class="tl_select tl_chosen"> |
|
24 |
+ <option value=""{{ filter.month.selected is not defined or not filter.month.selected ? ' selected' : '' }}>Monat</option> |
|
25 |
+ {% for value, label in filter.month.options %} |
|
26 |
+ <option value="{{ value }}"{{ filter.month.selected is defined and filter.month.selected == value ? ' selected' : '' }}>{{ label }}</option> |
|
27 |
+ {% endfor %} |
|
25 | 28 |
</select> |
26 | 29 |
</div> |
27 | 30 |
</div> |
... | ... |
@@ -68,6 +68,28 @@ class WeinanlieferungBookingsController extends AbstractController |
68 | 68 |
System::loadLanguageFile('default'); |
69 | 69 |
|
70 | 70 |
// Filter |
71 |
+ if (Input::post('FORM_SUBMIT') === 'tl_filters' && Input::post('filter_reset') === null) |
|
72 |
+ { |
|
73 |
+ $queryBuilder = $this->db->createQueryBuilder() |
|
74 |
+ ->select('id') |
|
75 |
+ ->from(WeinanlieferungSlotsModel::getTable()); |
|
76 |
+ |
|
77 |
+ if (!empty(Input::post('tl_month')) && is_numeric(Input::post('tl_month'))) |
|
78 |
+ { |
|
79 |
+ $Month = new Date(Input::post('tl_month')); |
|
80 |
+ $arrData['filter']['month']['selected'] = Input::post('tl_month'); |
|
81 |
+ $queryBuilder->andWhere('date BETWEEN :month_start AND :month_end') |
|
82 |
+ ->setParameter('month_start', $Month->monthBegin) |
|
83 |
+ ->setParameter('month_end', $Month->monthEnd); |
|
84 |
+ } else { |
|
85 |
+ $Today = new Date(); |
|
86 |
+ $queryBuilder->andWhere("time >= :today") |
|
87 |
+ ->setParameter('today',$Today->dayBegin); |
|
88 |
+ } |
|
89 |
+ |
|
90 |
+ $arrSlots = $queryBuilder->fetchFirstColumn(); |
|
91 |
+ |
|
92 |
+ } |
|
71 | 93 |
$arrMonthOptions = []; |
72 | 94 |
$MonthRequest = $this->db->executeQuery("SELECT s.date, DATE_FORMAT(FROM_UNIXTIME(s.date),'%m/%Y') as 'month_label' FROM tl_vr_wa_reservation r INNER JOIN tl_vr_wa_slot s ON s.id = r.pid GROUP BY month_label, s.date ORDER BY s.date ASC"); |
73 | 95 |
|
... | ... |
@@ -76,9 +98,28 @@ class WeinanlieferungBookingsController extends AbstractController |
76 | 98 |
$arrMonthOptions[$month['date']] = $month['month_label']; |
77 | 99 |
} |
78 | 100 |
|
101 |
+ $arrData['filter']['month']['options'] = $arrMonthOptions; |
|
102 |
+ |
|
79 | 103 |
|
80 | 104 |
// Get bookings |
81 |
- if (($bookings = WeinanlieferungReservationModel::findAllFuture(['order' => "(SELECT tl_vr_wa_slot.time FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id=tl_vr_wa_reservation.pid) ASC"])) !== null) |
|
105 |
+ if (isset($queryBuilder)) |
|
106 |
+ { |
|
107 |
+ $arrColumns = null; |
|
108 |
+ if (count($arrSlots)) |
|
109 |
+ { |
|
110 |
+ $arrColumns[] = "pid IN (".implode(',',$arrSlots).")"; |
|
111 |
+ } |
|
112 |
+ if (!$arrColumns) |
|
113 |
+ { |
|
114 |
+ $bookings = WeinanlieferungReservationModel::findAllFuture(['order' => "(SELECT tl_vr_wa_slot.time FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id=tl_vr_wa_reservation.pid) ASC"]); |
|
115 |
+ } else { |
|
116 |
+ $bookings = WeinanlieferungReservationModel::findBy($arrColumns,null,['order' => "(SELECT tl_vr_wa_slot.time FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id=tl_vr_wa_reservation.pid) ASC"]); |
|
117 |
+ } |
|
118 |
+ |
|
119 |
+ } else { |
|
120 |
+ $bookings = WeinanlieferungReservationModel::findAllFuture(['order' => "(SELECT tl_vr_wa_slot.time FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id=tl_vr_wa_reservation.pid) ASC"]); |
|
121 |
+ } |
|
122 |
+ if ($bookings !== null) |
|
82 | 123 |
{ |
83 | 124 |
/** @var WeinanlieferungReservationModel $booking */ |
84 | 125 |
foreach ($bookings as $booking) |