77use PanicHD \PanicHD \Models ;
88use PanicHD \PanicHD \Models \Setting ;
99use PanicHD \PanicHD \Traits \CacheVars ;
10+ use PanicHD \PanicHD \Traits \TicketFilters ;
1011
1112
1213class FiltersController extends Controller
1314{
14- use CacheVars;
15+ use CacheVars, TicketFilters ;
1516
16- // Available ticket filters
17- private $ a_filters = ['currentLevel ' , 'owner ' , 'calendar ' , 'year ' , 'category ' , 'agent ' ];
17+ // $a_filters is in TicketFilters trait
1818
1919 // Filters that can be called via /filteronly/
2020 private $ a_only_filters = ['category ' , 'owner ' , 'agent ' ];
@@ -31,60 +31,19 @@ class FiltersController extends Controller
3131 */
3232 public function manage (Request $ request , $ filter , $ value )
3333 {
34-
3534 //### PENDING: User permissions check or redirect back
3635
3736 if (in_array ($ filter , $ this ->a_filters ) == true ) {
3837 if ($ value == 'remove ' ) {
3938 // Delete filter
4039 $ request ->session ()->forget ('panichd_filter_ ' .$ filter );
4140
42- // General filter uncheck if none
43- $ current = false ;
44- foreach ($ this ->a_filters as $ single ){
45- if ($ request ->session ()->exists ('panichd_filter_ ' .$ single )){
46- $ current = true ;
47- break ;
48- }
49- }
50- if (!$ current ){
51- $ request ->session ()->forget ('panichd_filters ' );
52- }
53- } else {
54- $ add = false ;
55-
56- // Filter checks
57- if ($ filter =='currentLevel ' and in_array ($ value ,[1 ,2 ,3 ])){
58- $ add = true ;
59- }
60-
61- if ($ filter == 'owner ' and $ value == 'me ' ) {
62- $ add = true ;
63- }
64-
65- if ($ filter == 'calendar ' and in_array ($ value , ['expired ' , 'today ' , 'tomorrow ' , 'week ' , 'month ' , 'within-7-days ' , 'within-14-days ' , 'not-scheduled ' ])){
66- $ add = true ;
67- }
41+ // Check all filters
42+ $ this ->validateFilters ($ request );
6843
69- if ($ filter == 'year ' and ($ value == 'all ' or in_array ($ value , range ($ this ->getFirstTicketCompleteYear (), date ('Y ' ))))){
70- $ add = true ;
71- }
72-
73- if ($ filter == 'category ' and Models \Category::where ('id ' , $ value )->count () == 1 ) {
74- $ add = true ;
75- }
76-
77- if ($ filter == 'agent ' and Models \Member::where ('id ' , $ value )->count () == 1 ) {
78- $ add = true ;
79- }
80-
81- // Add filter
82- if ($ add ) {
83- $ request ->session ()->put ('panichd_filter_ ' .$ filter , $ value );
84-
85- // General filter check
86- $ request ->session ()->put ('panichd_filters ' ,'yes ' );
87- }
44+ } else {
45+ // Validate and add a filter
46+ $ this ->addAFilter ($ request , $ filter , $ value );
8847 }
8948 }
9049
@@ -98,34 +57,13 @@ public function only(Request $request, $filter, $value, $list)
9857 {
9958 if (in_array ($ filter , $ this ->a_only_filters ) and in_array ($ list , array_keys ($ this ->a_lists ))){
10059
101- $ apply = false ;
102-
103- if (in_array ($ filter , ['owner ' , 'agent ' ])){
104- $ member = Models \Member::where ('id ' , $ value );
60+ // Delete each filter from session
61+ foreach ($ this ->a_filters as $ delete ){
62+ $ request ->session ()->forget ('panichd_filter_ ' .$ delete );
10563 }
10664
107- if (($ filter == "owner " and $ member ->count () == 1 )
108- or ($ filter == "agent " and $ member ->count () == 1 and $ member ->first ()->isAgent ())){
109-
110- $ apply = true ;
111-
112- }elseif ($ filter == "category " and Models \Category::where ('id ' , $ value )->count () == 1 ){
113-
114- $ apply = true ;
115- }
116-
117- if ($ apply ){
118- // Delete each filter from session
119- foreach ($ this ->a_filters as $ delete ){
120- $ request ->session ()->forget ('panichd_filter_ ' .$ delete );
121- }
122-
123- // Add single filter
124- $ request ->session ()->put ('panichd_filter_ ' .$ filter , $ value );
125-
126- // General filter check
127- $ request ->session ()->put ('panichd_filters ' ,'yes ' );
128-
65+ // Validate and add a filter
66+ if ($ this ->addAFilter ($ request , $ filter , $ value )){
12967 // Redirect to specified route
13068 return redirect ()->route (Setting::grab ('main_route ' ).$ this ->a_lists [$ list ]);
13169 }
@@ -134,6 +72,27 @@ public function only(Request $request, $filter, $value, $list)
13472 return \Redirect::back ();
13573 }
13674
75+ /*
76+ * Add a filter and validate it
77+ *
78+ * @Return bool
79+ */
80+ public function addAFilter ($ request , $ filter , $ value )
81+ {
82+ // Add filter
83+ $ request ->session ()->put ('panichd_filter_ ' .$ filter , $ value );
84+
85+ // Check all filters
86+ list ($ request , $ filters_count ) = $ this ->validateFilters ($ request );
87+
88+ if ($ filters_count > 0 ) {
89+ // General filter check
90+ $ request ->session ()->put ('panichd_filters ' ,'yes ' );
91+ }
92+
93+ return $ request ->session ()->exists ('panichd_filter_ ' .$ filter );
94+ }
95+
13796 /*
13897 * Remove all filters
13998 */
0 commit comments