@@ -150,23 +150,76 @@ public function postSortPromptCategory(Request $request, PromptService $service)
150150 **********************************************************************************************/
151151
152152 /**
153- * Shows the prompt category index.
153+ * Shows the prompt index.
154154 *
155155 * @return \Illuminate\Contracts\Support\Renderable
156156 */
157157 public function getPromptIndex (Request $ request ) {
158- $ query = Prompt::query ();
159- $ data = $ request ->only (['prompt_category_id ' , 'name ' ]);
158+ $ query = Prompt::query ()-> with ( ' category ' ) ;
159+ $ data = $ request ->only (['prompt_category_id ' , 'name ' , ' sort ' , ' open_prompts ' ]);
160160 if (isset ($ data ['prompt_category_id ' ]) && $ data ['prompt_category_id ' ] != 'none ' ) {
161- $ query ->where ('prompt_category_id ' , $ data ['prompt_category_id ' ]);
161+ if ($ data ['prompt_category_id ' ] == 'withoutOption ' ) {
162+ $ query ->whereNull ('prompt_category_id ' );
163+ } else {
164+ $ query ->where ('prompt_category_id ' , $ data ['prompt_category_id ' ]);
165+ }
162166 }
163167 if (isset ($ data ['name ' ])) {
164168 $ query ->where ('name ' , 'LIKE ' , '% ' .$ data ['name ' ].'% ' );
165169 }
166170
171+ if (isset ($ data ['open_prompts ' ])) {
172+ switch ($ data ['open_prompts ' ]) {
173+ case 'open ' :
174+ $ query ->open (true );
175+ break ;
176+ case 'closed ' :
177+ $ query ->open (false );
178+ break ;
179+ case 'any ' :
180+ default :
181+ // Don't filter
182+ break ;
183+ }
184+ }
185+
186+ if (isset ($ data ['sort ' ])) {
187+ switch ($ data ['sort ' ]) {
188+ case 'alpha ' :
189+ $ query ->sortAlphabetical ();
190+ break ;
191+ case 'alpha-reverse ' :
192+ $ query ->sortAlphabetical (true );
193+ break ;
194+ case 'category ' :
195+ $ query ->sortCategory ();
196+ break ;
197+ case 'newest ' :
198+ $ query ->sortNewest ();
199+ break ;
200+ case 'oldest ' :
201+ $ query ->sortNewest (true );
202+ break ;
203+ case 'start ' :
204+ $ query ->sortStart ();
205+ break ;
206+ case 'start-reverse ' :
207+ $ query ->sortStart (true );
208+ break ;
209+ case 'end ' :
210+ $ query ->sortEnd ();
211+ break ;
212+ case 'end-reverse ' :
213+ $ query ->sortEnd (true );
214+ break ;
215+ }
216+ } else {
217+ $ query ->sortCategory ();
218+ }
219+
167220 return view ('admin.prompts.prompts ' , [
168221 'prompts ' => $ query ->paginate (20 )->appends ($ request ->query ()),
169- 'categories ' => ['none ' => 'Any Category ' ] + PromptCategory::orderBy ('sort ' , 'DESC ' )->pluck ('name ' , 'id ' )->toArray (),
222+ 'categories ' => ['none ' => 'Any Category ' ] + [ ' withoutOption ' => ' Without Category ' ] + PromptCategory::orderBy ('sort ' , 'DESC ' )->pluck ('name ' , 'id ' )->toArray (),
170223 ]);
171224 }
172225
0 commit comments