Browse code

Fix city filter

Benjamin Roth authored on02/10/2024 13:01:06
Showing1 changed files
... ...
@@ -69,7 +69,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
69 69
                     } else {
70 70
                         if ($filter == 'city')
71 71
                         {
72
-                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
72
+                            $arrAssetsOptions['column'][$filter] = "(($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId))";
73 73
                             $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
74 74
                         } else
75 75
                         {
... ...
@@ -157,7 +157,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
157 157
                 }
158 158
 
159 159
                 $tmpOptions = $arrAssetsOptions;
160
-                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)']);
160
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'((city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId))']);
161 161
                 $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$strCity,'city_sq'=>$strCity]);
162 162
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
163 163
                 if ($count > 0)
Browse code

Revert "Fix city filter"

This reverts commit 087d1992ddd6eb4f356b17f596f0bef634944b63.

Benjamin Roth authored on02/10/2024 12:48:29
Showing1 changed files
... ...
@@ -69,7 +69,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
69 69
                     } else {
70 70
                         if ($filter == 'city')
71 71
                         {
72
-                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR (managedPropertyId > 0 AND ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId))";
72
+                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
73 73
                             $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
74 74
                         } else
75 75
                         {
Browse code

Fix city filter

Benjamin Roth authored on02/10/2024 12:44:29
Showing1 changed files
... ...
@@ -69,7 +69,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
69 69
                     } else {
70 70
                         if ($filter == 'city')
71 71
                         {
72
-                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
72
+                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR (managedPropertyId > 0 AND ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId))";
73 73
                             $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
74 74
                         } else
75 75
                         {
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:30:31
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias ? '/auto_item/'.$asset->alias : '/items/'.$asset->id]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias ? '/'.$asset->alias : '/items/'.$asset->id]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:26:55
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/auto_item/'.$asset->alias ?: '/items/'.$asset->id]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias ? '/auto_item/'.$asset->alias : '/items/'.$asset->id]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:24:46
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/'.$asset->alias ?: '/items/'.$asset->id]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/auto_item/'.$asset->alias ?: '/items/'.$asset->id]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:21:56
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias ?: '/items/'.$asset->id]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/'.$asset->alias ?: '/items/'.$asset->id]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:13:35
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.($asset->alias ?: $asset->id)]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias ?: '/items/'.$asset->id]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:12:51
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->alias]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.($asset->alias ?: $asset->id)]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:08:05
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->alias]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Add alias to assets

Benjamin Roth authored on01/10/2024 14:01:30
Showing1 changed files
... ...
@@ -95,7 +95,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
95 95
 
96 96
         foreach ($assets as $asset)
97 97
         {
98
-            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null;
98
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>$asset->alias]) : null;
99 99
             $figureBuilder->setLinkHref($strUrl);
100 100
             $arrItem = array_merge($asset->row(), [
101 101
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
Browse code

Fix city filter regarding managedProperty linked assets

Benjamin Roth authored on30/09/2024 16:48:01
Showing1 changed files
... ...
@@ -70,13 +70,12 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
70 70
                         if ($filter == 'city')
71 71
                         {
72 72
                             $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
73
-                            $arrAssetsOptions['value'][$filter] = $rawValue;
74 73
                             $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
75 74
                         } else
76 75
                         {
77 76
                             $arrAssetsOptions['column'][$filter] = "$filter = ?";
78
-                            $arrAssetsOptions['value'][$filter] = $rawValue;
79 77
                         }
78
+                        $arrAssetsOptions['value'][$filter] = $rawValue;
80 79
                     }
81 80
                 }
82 81
             }
... ...
@@ -159,7 +158,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
159 158
 
160 159
                 $tmpOptions = $arrAssetsOptions;
161 160
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)']);
162
-                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$strCity,$strCity]);
161
+                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$strCity,'city_sq'=>$strCity]);
163 162
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
164 163
                 if ($count > 0)
165 164
                 {
Browse code

Fix city filter regarding managedProperty linked assets

Benjamin Roth authored on30/09/2024 16:42:12
Showing1 changed files
... ...
@@ -69,13 +69,14 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
69 69
                     } else {
70 70
                         if ($filter == 'city')
71 71
                         {
72
-                            $arrAssetsOptions['column'][$filter] = "(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
72
+                            $arrAssetsOptions['column'][$filter] = "($filter = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
73
+                            $arrAssetsOptions['value'][$filter] = $rawValue;
73 74
                             $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
74 75
                         } else
75 76
                         {
76 77
                             $arrAssetsOptions['column'][$filter] = "$filter = ?";
78
+                            $arrAssetsOptions['value'][$filter] = $rawValue;
77 79
                         }
78
-                        $arrAssetsOptions['value'][$filter] = $rawValue;
79 80
                     }
80 81
                 }
81 82
             }
Browse code

Fix city filter regarding managedProperty linked assets

Benjamin Roth authored on30/09/2024 16:32:36
Showing1 changed files
... ...
@@ -67,7 +67,14 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
67 67
                         list($start,$stop) = preg_split('/<>/',$rawValue, 2);
68 68
                         $arrAssetsOptions['column'][$filter] = "$filter BETWEEN $start AND $stop";
69 69
                     } else {
70
-                        $arrAssetsOptions['column'][$filter] = "$filter = ?";
70
+                        if ($filter == 'city')
71
+                        {
72
+                            $arrAssetsOptions['column'][$filter] = "(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)";
73
+                            $arrAssetsOptions['value'][$filter.'_sq'] = $rawValue;
74
+                        } else
75
+                        {
76
+                            $arrAssetsOptions['column'][$filter] = "$filter = ?";
77
+                        }
71 78
                         $arrAssetsOptions['value'][$filter] = $rawValue;
72 79
                     }
73 80
                 }
Browse code

Set link on teaser image in asset list module

Benjamin Roth authored on11/09/2024 11:51:18
Showing1 changed files
... ...
@@ -88,11 +88,14 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
88 88
 
89 89
         foreach ($assets as $asset)
90 90
         {
91
+            $strUrl = $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null;
92
+            $figureBuilder->setLinkHref($strUrl);
91 93
             $arrItem = array_merge($asset->row(), [
92 94
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
93
-                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null,
95
+                'detailsUrl'   => $strUrl,
94 96
                 'hasProperty' => false
95 97
             ]);
98
+            $figureBuilder->setLinkHref(null);
96 99
 
97 100
             // Check for object
98 101
             if (($Property = $asset->getRelated('managedPropertyId')) !== null) {
Browse code

Fix wrong parameter count when filtering for cities

Benjamin Roth authored on08/08/2024 10:18:56
Showing1 changed files
... ...
@@ -148,7 +148,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
148 148
 
149 149
                 $tmpOptions = $arrAssetsOptions;
150 150
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)']);
151
-                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),[$strCity,$strCity]);
151
+                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$strCity,$strCity]);
152 152
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
153 153
                 if ($count > 0)
154 154
                 {
Browse code

Only display applicable filter values in assets list

Benjamin Roth authored on08/08/2024 10:18:29
Showing1 changed files
... ...
@@ -132,7 +132,10 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
132 132
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['numberOfRooms'=>'numberOfRooms = ?']);
133 133
                 $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['numberOfRooms'=>$asset->numberOfRooms]);
134 134
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
135
-                $arrFilterOptions['numberOfRooms'][$asset->numberOfRooms] = $asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default')) . ' ('.$count.')';
135
+                if ($count > 0)
136
+                {
137
+                    $arrFilterOptions['numberOfRooms'][$asset->numberOfRooms] = $asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default')) . ' ('.$count.')';
138
+                }
136 139
             }
137 140
             if (!empty($asset->city))
138 141
             {
... ...
@@ -147,7 +150,10 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
147 150
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)']);
148 151
                 $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),[$strCity,$strCity]);
149 152
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
150
-                $arrFilterOptions['city'][$strCity] = $strCity . ' ('.$count.')';
153
+                if ($count > 0)
154
+                {
155
+                    $arrFilterOptions['city'][$strCity] = $strCity . ' (' . $count . ')';
156
+                }
151 157
             }
152 158
             if (!empty($asset->coldRent))
153 159
             {
... ...
@@ -156,7 +162,10 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
156 162
                 $tmpOptions = $arrAssetsOptions;
157 163
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['coldRent'=>"coldRent BETWEEN $rangeStart AND $rangeEnd"]);
158 164
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
159
-                $arrFilterOptions['coldRent'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' €' . ' ('.$count.')';
165
+                if ($count > 0)
166
+                {
167
+                    $arrFilterOptions['coldRent'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' €' . ' ('.$count.')';
168
+                }
160 169
             }
161 170
             if (!empty($asset->livingSpace))
162 171
             {
... ...
@@ -165,7 +174,10 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
165 174
                 $tmpOptions = $arrAssetsOptions;
166 175
                 $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['livingSpace'=>"livingSpace BETWEEN $rangeStart AND $rangeEnd"]);
167 176
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
168
-                $arrFilterOptions['livingSpace'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' m²' . ' ('.$count.')';
177
+                if ($count > 0)
178
+                {
179
+                    $arrFilterOptions['livingSpace'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' m²' . ' ('.$count.')';
180
+                }
169 181
             }
170 182
         }
171 183
 
Browse code

Use property data in asset list if applicable

Benjamin Roth authored on08/08/2024 10:03:41
Showing1 changed files
... ...
@@ -90,9 +90,19 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
90 90
         {
91 91
             $arrItem = array_merge($asset->row(), [
92 92
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
93
-                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null
93
+                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null,
94
+                'hasProperty' => false
94 95
             ]);
95 96
 
97
+            // Check for object
98
+            if (($Property = $asset->getRelated('managedPropertyId')) !== null) {
99
+                $arrItem['hasProperty'] = true;
100
+                $arrItem['property'] = array_merge($Property->row(),[
101
+                    'teaserFigure'      => $this->getImageFigures($Property->gallerySRC, $figureBuilder, $Property->orderSRC, 1),
102
+                    'galleryFigures'    => $this->getImageFigures($Property->gallerySRC, $figureBuilder, $Property->orderSRC, 0, 0),
103
+                ]);
104
+            }
105
+
96 106
             // Grouping
97 107
             if ($model->vr_re_grouped)
98 108
             {
... ...
@@ -126,11 +136,18 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
126 136
             }
127 137
             if (!empty($asset->city))
128 138
             {
139
+                $strCity = $asset->city;
140
+
141
+                // Check for object
142
+                if (($Property = $asset->getRelated('managedPropertyId')) !== null) {
143
+                    $strCity = $Property->city;
144
+                }
145
+
129 146
                 $tmpOptions = $arrAssetsOptions;
130
-                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'city = ?']);
131
-                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$asset->city]);
147
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'(city = ? AND managedPropertyId < 1) OR ? IN (SELECT p.city FROM tl_vr_re_managedProperties p WHERE p.id = managedPropertyId)']);
148
+                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),[$strCity,$strCity]);
132 149
                 $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
133
-                $arrFilterOptions['city'][$asset->city] = $asset->city . ' ('.$count.')';
150
+                $arrFilterOptions['city'][$strCity] = $strCity . ' ('.$count.')';
134 151
             }
135 152
             if (!empty($asset->coldRent))
136 153
             {
Browse code

Improve filter

Benjamin Roth authored on15/03/2024 14:57:46
Showing1 changed files
... ...
@@ -65,10 +65,10 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
65 65
                     if (preg_match('/^.*<>.*$/',$rawValue))
66 66
                     {
67 67
                         list($start,$stop) = preg_split('/<>/',$rawValue, 2);
68
-                        $arrAssetsOptions['column'][] = "$filter BETWEEN $start AND $stop";
68
+                        $arrAssetsOptions['column'][$filter] = "$filter BETWEEN $start AND $stop";
69 69
                     } else {
70
-                        $arrAssetsOptions['column'][] = "$filter = ?";
71
-                        $arrAssetsOptions['value'][] = $rawValue;
70
+                        $arrAssetsOptions['column'][$filter] = "$filter = ?";
71
+                        $arrAssetsOptions['value'][$filter] = $rawValue;
72 72
                     }
73 73
                 }
74 74
             }
... ...
@@ -109,29 +109,47 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
109 109
             } else {
110 110
                 $arrGroups['nogroup']['items'][] = $arrItem;
111 111
             }
112
+        }
112 113
 
114
+        // Populate filters
115
+        $filterAssets = $this->getRealEstateAssets(StringUtil::deserialize($model->vr_re_categories));
116
+        foreach ($filterAssets as $asset)
117
+        {
113 118
             // Filter options
114 119
             if (!empty($asset->numberOfRooms))
115 120
             {
116
-                $arrFilterOptions['numberOfRooms'][$asset->numberOfRooms] = $asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default'));
121
+                $tmpOptions = $arrAssetsOptions;
122
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['numberOfRooms'=>'numberOfRooms = ?']);
123
+                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['numberOfRooms'=>$asset->numberOfRooms]);
124
+                $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
125
+                $arrFilterOptions['numberOfRooms'][$asset->numberOfRooms] = $asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default')) . ' ('.$count.')';
117 126
             }
118 127
             if (!empty($asset->city))
119 128
             {
120
-                $arrFilterOptions['city'][$asset->city] = $asset->city;
129
+                $tmpOptions = $arrAssetsOptions;
130
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['city'=>'city = ?']);
131
+                $tmpOptions['value'] = array_merge((isset($arrAssetsOptions['value']) ? $arrAssetsOptions['value'] : []),['city'=>$asset->city]);
132
+                $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
133
+                $arrFilterOptions['city'][$asset->city] = $asset->city . ' ('.$count.')';
121 134
             }
122 135
             if (!empty($asset->coldRent))
123 136
             {
124 137
                 $rangeStart = floor($asset->coldRent / 100) * 100;
125 138
                 $rangeEnd = $rangeStart + 99;
126
-                $arrFilterOptions['coldRent'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' €';
139
+                $tmpOptions = $arrAssetsOptions;
140
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['coldRent'=>"coldRent BETWEEN $rangeStart AND $rangeEnd"]);
141
+                $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
142
+                $arrFilterOptions['coldRent'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' €' . ' ('.$count.')';
127 143
             }
128 144
             if (!empty($asset->livingSpace))
129 145
             {
130 146
                 $rangeStart = floor($asset->livingSpace / 10) * 10;
131 147
                 $rangeEnd = $rangeStart + 9;
132
-                $arrFilterOptions['livingSpace'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' m²';
148
+                $tmpOptions = $arrAssetsOptions;
149
+                $tmpOptions['column'] = array_merge((isset($arrAssetsOptions['column']) ? $arrAssetsOptions['column'] : []),['livingSpace'=>"livingSpace BETWEEN $rangeStart AND $rangeEnd"]);
150
+                $count = $this->countRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$tmpOptions);
151
+                $arrFilterOptions['livingSpace'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' m²' . ' ('.$count.')';
133 152
             }
134
-
135 153
         }
136 154
 
137 155
         foreach (array_keys($arrFilterOptions) as $filterName)
... ...
@@ -139,6 +157,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
139 157
             $arrFilterOptions[$filterName] = array_unique($arrFilterOptions[$filterName]);
140 158
         }
141 159
 
160
+        // Set template data
142 161
         $template->set('filterOptions',$arrFilterOptions);
143 162
         $template->set('filter',$arrFilterSelected);
144 163
         $template->set('groups',$arrGroups);
Browse code

Make assets list module filterable

Benjamin Roth authored on14/03/2024 17:05:25
Showing1 changed files
... ...
@@ -13,6 +13,7 @@ use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
13 13
 use Contao\CoreBundle\Exception\ResponseException;
14 14
 use Contao\CoreBundle\Image\Studio\Studio;
15 15
 use Contao\CoreBundle\Twig\FragmentTemplate;
16
+use Contao\Input;
16 17
 use Contao\ModuleModel;
17 18
 use Contao\PageModel;
18 19
 use Contao\StringUtil;
... ...
@@ -36,17 +37,44 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
36 37
         $this->translator = $translator;
37 38
     }
38 39
 
39
-
40 40
     protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
41 41
     {
42 42
         $arrGroups = [];
43
-        $arrFilterOptions = [];
43
+        $arrFilterOptions = [
44
+            'numberOfRooms' => [],
45
+            'coldRent' => [],
46
+            'livingSpace' => [],
47
+            'city' => []
48
+        ];
49
+        $arrFilterSelected = [];
50
+        $arrAssetsOptions = [];
44 51
 
45 52
         $jumpTo = PageModel::findByPk($model->jumpTo);
46 53
         $urlGenerator = System::getContainer()->get('contao.routing.content_url_generator');
47 54
 
55
+        // Filter
56
+        if (isset($_GET['filter']) && \is_array(Input::get('filter')))
57
+        {
58
+            foreach (Input::get('filter') as $filter=>$value)
59
+            {
60
+                if (in_array($filter, array_keys($arrFilterOptions)) && !empty($value))
61
+                {
62
+                    $rawValue = StringUtil::decodeEntities($value);
63
+                    $arrFilterSelected[$filter] = $rawValue;
64
+
65
+                    if (preg_match('/^.*<>.*$/',$rawValue))
66
+                    {
67
+                        list($start,$stop) = preg_split('/<>/',$rawValue, 2);
68
+                        $arrAssetsOptions['column'][] = "$filter BETWEEN $start AND $stop";
69
+                    } else {
70
+                        $arrAssetsOptions['column'][] = "$filter = ?";
71
+                        $arrAssetsOptions['value'][] = $rawValue;
72
+                    }
73
+                }
74
+            }
75
+        }
48 76
 
49
-        if (($assets = $this->getRealEstateAssets(StringUtil::deserialize($model->vr_re_categories))) === null)
77
+        if (($assets = $this->getRealEstateAssets(StringUtil::deserialize($model->vr_re_categories),$arrAssetsOptions)) === null)
50 78
         {
51 79
             return $template->getResponse();
52 80
         }
... ...
@@ -85,14 +113,34 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
85 113
             // Filter options
86 114
             if (!empty($asset->numberOfRooms))
87 115
             {
88
-                $arrFilterOptions['rooms'][] = ['value'=>$asset->numberOfRooms, 'label'=>$asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default'))];
116
+                $arrFilterOptions['numberOfRooms'][$asset->numberOfRooms] = $asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default'));
117
+            }
118
+            if (!empty($asset->city))
119
+            {
120
+                $arrFilterOptions['city'][$asset->city] = $asset->city;
121
+            }
122
+            if (!empty($asset->coldRent))
123
+            {
124
+                $rangeStart = floor($asset->coldRent / 100) * 100;
125
+                $rangeEnd = $rangeStart + 99;
126
+                $arrFilterOptions['coldRent'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' €';
127
+            }
128
+            if (!empty($asset->livingSpace))
129
+            {
130
+                $rangeStart = floor($asset->livingSpace / 10) * 10;
131
+                $rangeEnd = $rangeStart + 9;
132
+                $arrFilterOptions['livingSpace'][$rangeStart.'<>'.$rangeEnd] = $rangeStart . ' - ' . $rangeEnd . ' m²';
89 133
             }
90 134
 
91 135
         }
92 136
 
93
-        $arrFilterOptions = array_unique($arrFilterOptions);
137
+        foreach (array_keys($arrFilterOptions) as $filterName)
138
+        {
139
+            $arrFilterOptions[$filterName] = array_unique($arrFilterOptions[$filterName]);
140
+        }
94 141
 
95 142
         $template->set('filterOptions',$arrFilterOptions);
143
+        $template->set('filter',$arrFilterSelected);
96 144
         $template->set('groups',$arrGroups);
97 145
 
98 146
         // Handle ajax
Browse code

Current stat

Benjamin Roth authored on08/03/2024 11:50:12
Showing1 changed files
... ...
@@ -10,6 +10,7 @@
10 10
 namespace vonRotenberg\RealEstateListingBundle\Controller\FrontendModule;
11 11
 
12 12
 use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
13
+use Contao\CoreBundle\Exception\ResponseException;
13 14
 use Contao\CoreBundle\Image\Studio\Studio;
14 15
 use Contao\CoreBundle\Twig\FragmentTemplate;
15 16
 use Contao\ModuleModel;
... ...
@@ -18,15 +19,28 @@ use Contao\StringUtil;
18 19
 use Contao\System;
19 20
 use Symfony\Component\HttpFoundation\Request;
20 21
 use Symfony\Component\HttpFoundation\Response;
22
+use Symfony\Contracts\Translation\TranslatorInterface;
21 23
 
22 24
 #[AsFrontendModule(RealEstateAssetsListController::TYPE, category: 'miscellaneous')]
23 25
 class RealEstateAssetsListController extends RealEstateAssetsModuleController
24 26
 {
25 27
     public const TYPE = 'vr_re_assets_list';
26 28
 
29
+    /**
30
+     * @var TranslatorInterface
31
+     */
32
+    protected $translator;
33
+
34
+    public function __construct(TranslatorInterface $translator)
35
+    {
36
+        $this->translator = $translator;
37
+    }
38
+
39
+
27 40
     protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
28 41
     {
29 42
         $arrGroups = [];
43
+        $arrFilterOptions = [];
30 44
 
31 45
         $jumpTo = PageModel::findByPk($model->jumpTo);
32 46
         $urlGenerator = System::getContainer()->get('contao.routing.content_url_generator');
... ...
@@ -37,6 +51,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
37 51
             return $template->getResponse();
38 52
         }
39 53
 
54
+        // Figure Builder
40 55
         $figureBuilder = System::getContainer()
41 56
             ->get('contao.image.studio')
42 57
             ->createFigureBuilder()
... ...
@@ -49,7 +64,6 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
49 64
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
50 65
                 'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null
51 66
             ]);
52
-            dump($arrItem);
53 67
 
54 68
             // Grouping
55 69
             if ($model->vr_re_grouped)
... ...
@@ -68,9 +82,25 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
68 82
                 $arrGroups['nogroup']['items'][] = $arrItem;
69 83
             }
70 84
 
85
+            // Filter options
86
+            if (!empty($asset->numberOfRooms))
87
+            {
88
+                $arrFilterOptions['rooms'][] = ['value'=>$asset->numberOfRooms, 'label'=>$asset->numberOfRooms . ' ' . ($asset->numberOfRooms > 1 ? $this->translator->trans('MSC.re_rooms', [], 'contao_default') : $this->translator->trans('MSC.re_room', [], 'contao_default'))];
89
+            }
90
+
71 91
         }
72 92
 
93
+        $arrFilterOptions = array_unique($arrFilterOptions);
94
+
95
+        $template->set('filterOptions',$arrFilterOptions);
73 96
         $template->set('groups',$arrGroups);
97
+
98
+        // Handle ajax
99
+        if ($request->headers->get('VR-Ajax') == 'ReAssetsList')
100
+        {
101
+            throw new ResponseException($template->getResponse());
102
+        }
103
+
74 104
         return $template->getResponse();
75 105
     }
76 106
 
Browse code

Use new url generator service for details link

Benjamin Roth authored on27/02/2024 15:18:02
Showing1 changed files
... ...
@@ -47,8 +47,9 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
47 47
         {
48 48
             $arrItem = array_merge($asset->row(), [
49 49
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
50
-                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo)/*(\Config::get('useAutoItem') ? '/' : '/items/') . $asset->id)*/ : null
50
+                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo, ['parameters'=>'/items/'.$asset->id]) : null
51 51
             ]);
52
+            dump($arrItem);
52 53
 
53 54
             // Grouping
54 55
             if ($model->vr_re_grouped)
Browse code

Add grouping for list module

Benjamin Roth authored on27/02/2024 15:01:02
Showing1 changed files
... ...
@@ -26,7 +26,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
26 26
 
27 27
     protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
28 28
     {
29
-        $arrItems = [];
29
+        $arrGroups = [];
30 30
 
31 31
         $jumpTo = PageModel::findByPk($model->jumpTo);
32 32
         $urlGenerator = System::getContainer()->get('contao.routing.content_url_generator');
... ...
@@ -50,10 +50,26 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
50 50
                 'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo)/*(\Config::get('useAutoItem') ? '/' : '/items/') . $asset->id)*/ : null
51 51
             ]);
52 52
 
53
-            $arrItems[] = $arrItem;
53
+            // Grouping
54
+            if ($model->vr_re_grouped)
55
+            {
56
+                if (!isset($arrGroups[$arrItem['pid']]))
57
+                {
58
+                    $Group = $asset->getRelated('pid');
59
+                    $arrGroups[$arrItem['pid']] = [
60
+                        'label' => $Group->title,
61
+                        'items' => []
62
+                    ];
63
+                }
64
+
65
+                $arrGroups[$arrItem['pid']]['items'][] = $arrItem;
66
+            } else {
67
+                $arrGroups['nogroup']['items'][] = $arrItem;
68
+            }
69
+
54 70
         }
55 71
 
56
-        $template->set('items',$arrItems);
72
+        $template->set('groups',$arrGroups);
57 73
         return $template->getResponse();
58 74
     }
59 75
 
Browse code

Fix studio service call

Benjamin Roth authored on26/02/2024 18:15:30
Showing1 changed files
... ...
@@ -29,6 +29,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
29 29
         $arrItems = [];
30 30
 
31 31
         $jumpTo = PageModel::findByPk($model->jumpTo);
32
+        $urlGenerator = System::getContainer()->get('contao.routing.content_url_generator');
32 33
 
33 34
 
34 35
         if (($assets = $this->getRealEstateAssets(StringUtil::deserialize($model->vr_re_categories))) === null)
... ...
@@ -37,7 +38,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
37 38
         }
38 39
 
39 40
         $figureBuilder = System::getContainer()
40
-            ->get(Studio::class)
41
+            ->get('contao.image.studio')
41 42
             ->createFigureBuilder()
42 43
             ->setSize($model->imgSize)
43 44
             ->setLightboxGroupIdentifier('lb' . $model->id);
... ...
@@ -46,7 +47,7 @@ class RealEstateAssetsListController extends RealEstateAssetsModuleController
46 47
         {
47 48
             $arrItem = array_merge($asset->row(), [
48 49
                 'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
49
-                'detailsUrl'   => $jumpTo !== null ? $jumpTo->getFrontendUrl((\Config::get('useAutoItem') ? '/' : '/items/') . $asset->id) : null
50
+                'detailsUrl'   => $jumpTo !== null ? $urlGenerator->generate($jumpTo)/*(\Config::get('useAutoItem') ? '/' : '/items/') . $asset->id)*/ : null
50 51
             ]);
51 52
 
52 53
             $arrItems[] = $arrItem;
Browse code

Initial commit

Benjamin Roth authored on26/02/2024 17:53:24
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,59 @@
1
+<?php
2
+/**
3
+ * OBG Customizations
4
+ *
5
+ * Copyright (c) 2021 vonRotenberg
6
+ *
7
+ * @license commercial
8
+ */
9
+
10
+namespace vonRotenberg\RealEstateListingBundle\Controller\FrontendModule;
11
+
12
+use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
13
+use Contao\CoreBundle\Image\Studio\Studio;
14
+use Contao\CoreBundle\Twig\FragmentTemplate;
15
+use Contao\ModuleModel;
16
+use Contao\PageModel;
17
+use Contao\StringUtil;
18
+use Contao\System;
19
+use Symfony\Component\HttpFoundation\Request;
20
+use Symfony\Component\HttpFoundation\Response;
21
+
22
+#[AsFrontendModule(RealEstateAssetsListController::TYPE, category: 'miscellaneous')]
23
+class RealEstateAssetsListController extends RealEstateAssetsModuleController
24
+{
25
+    public const TYPE = 'vr_re_assets_list';
26
+
27
+    protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
28
+    {
29
+        $arrItems = [];
30
+
31
+        $jumpTo = PageModel::findByPk($model->jumpTo);
32
+
33
+
34
+        if (($assets = $this->getRealEstateAssets(StringUtil::deserialize($model->vr_re_categories))) === null)
35
+        {
36
+            return $template->getResponse();
37
+        }
38
+
39
+        $figureBuilder = System::getContainer()
40
+            ->get(Studio::class)
41
+            ->createFigureBuilder()
42
+            ->setSize($model->imgSize)
43
+            ->setLightboxGroupIdentifier('lb' . $model->id);
44
+
45
+        foreach ($assets as $asset)
46
+        {
47
+            $arrItem = array_merge($asset->row(), [
48
+                'teaserFigure' => $this->getImageFigures($asset->gallerySRC, $figureBuilder, $asset->orderSRC, 1),
49
+                'detailsUrl'   => $jumpTo !== null ? $jumpTo->getFrontendUrl((\Config::get('useAutoItem') ? '/' : '/items/') . $asset->id) : null
50
+            ]);
51
+
52
+            $arrItems[] = $arrItem;
53
+        }
54
+
55
+        $template->set('items',$arrItems);
56
+        return $template->getResponse();
57
+    }
58
+
59
+}