@@ -124,48 +124,32 @@ protected function applyLikeFilter(Builder $assets, array $filter, string $key,
124124 }
125125 }
126126
127- public function applyDateRangeFilter ($ query , array $ filters , string $ qualifiedField )
127+ protected function applyDateRangeFilter (Builder $ assets , array $ filter , string $ field ): void
128128 {
129- $ start = null ;
130- $ end = null ;
129+ $ startKey = $ field . ' _start ' ;
130+ $ endKey = $ field . ' _end ' ;
131131
132- $ fieldNameOnly = Str::afterLast ($ qualifiedField , '. ' );
132+ $ start = $ filter [$ startKey ] ?? null ;
133+ $ end = $ filter [$ endKey ] ?? null ;
133134
134- foreach ($ filters as $ filter ) {
135- if (!isset ($ filter ['field ' ], $ filter ['value ' ]) || !is_array ($ filter ['value ' ])) {
136- continue ;
137- }
138-
139- if ($ filter ['field ' ] !== $ fieldNameOnly ) {
140- continue ;
141- }
142-
143- if (isset ($ filter ['value ' ]['startDate ' ])) {
144- $ start = $ filter ['value ' ]['startDate ' ] ?: null ;
145- }
146135
147- if (isset ($ filter ['value ' ]['endDate ' ])) {
148- $ end = $ filter ['value ' ]['endDate ' ] ?: null ;
149- }
136+ if (!$ start && !$ end ) {
137+ return ;
150138 }
151139
152- if ($ start || $ end ) {
153- $ query ->whereNotNull ($ qualifiedField );
154- }
140+ $ table = $ assets ->getModel ()->getTable ();
141+ $ column = $ table . '. ' . $ field ;
155142
156- if (! empty ( $ start) ) {
157- $ query ->whereDate ($ qualifiedField , '>= ' , $ start );
143+ if ($ start ) {
144+ $ assets ->whereDate ($ column , '>= ' , $ start );
158145 }
159146
160- if (! empty ( $ end) ) {
161- $ query ->whereDate ($ qualifiedField , '<= ' , $ end );
147+ if ($ end ) {
148+ $ assets ->whereDate ($ column , '<= ' , $ end );
162149 }
163-
164- return $ query ;
165150 }
166151
167152
168-
169153 public function filterAssets (Builder $ assets )
170154 {
171155 $ filter = $ this ->filter_data ?? [];
@@ -183,15 +167,15 @@ public function filterAssets(Builder $assets)
183167 $ this ->applyArrayOrScalarFilter ($ assets , $ filter , 'manufacturer_id ' , 'models.manufacturer_id ' );
184168 }
185169
186- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. created_at ' );
187- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. purchase_date ' );
188- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. last_checkout ' );
189- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. last_checkin ' );
190- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. expected_checkin ' );
191- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. asset_eol_date ' );
192- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. last_audit_date ' );
193- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. next_audit_date ' );
194- $ this ->applyDateRangeFilter ($ assets , $ filter , 'assets. updated_at ' );
170+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'created_at ' );
171+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'purchase_date ' );
172+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'last_checkout ' );
173+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'last_checkin ' );
174+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'expected_checkin ' );
175+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'asset_eol_date ' );
176+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'last_audit_date ' );
177+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'next_audit_date ' );
178+ $ this ->applyDateRangeFilter ($ assets , $ filter , 'updated_at ' );
195179
196180 $ this ->applyLikeFilter ($ assets , $ filter , 'name ' , 'assets.name ' );
197181 $ this ->applyLikeFilter ($ assets , $ filter , 'asset_tag ' , 'assets.asset_tag ' );
0 commit comments