22
33namespace  App \Http \Controllers ;
44
5- use  App \Models \Izin ;
65use  Illuminate \Http \Request ;
6+ use  App \Jobs \IzinJob ;
7+ use  App \Models \Izin ;
8+ use  App \Models \User ;
79
810use  Auth ;
911
@@ -17,6 +19,7 @@ class IzinController extends Controller
1719     */ 
1820    public  function  index (Request   $ request )
1921    {
22+         $ userId  = Auth::user ()->id ;
2023        $ izin  = Izin::where (function ($ query ) use  ($ request ) {
2124            if  (!is_null ($ request ->start ) and  !is_null ($ request ->end )) {
2225                $ query ->whereBetween ('start ' , [$ request ->start , $ request ->end ])
@@ -26,7 +29,7 @@ public function index(Request $request)
2629                $ query ->where ('name ' , 'like ' , "% $ request ->keyword % " )
2730                    ->orWhere ('information ' , 'like ' , "% $ request ->keyword % " );
2831            }
29-         })->paginate ($ request ->showitem  ?? 5 );
32+         })->where ( ' user_id ' ,  $ userId )-> paginate ($ request ->showitem  ?? 5 );
3033
3134        $ izin ->appends ($ request ->query ());
3235
@@ -90,7 +93,7 @@ public function update(Request $request, Izin $izin)
9093            'end '          => 'required ' 
9194        ]);
9295
93-         if  ($ izin ->approved ) abort (400 );
96+         if  (! is_null ( $ izin ->approved ) ) abort (400 );
9497
9598        try  {
9699            $ izin ->update ($ request ->all ());
@@ -115,4 +118,71 @@ public function destroy(Izin $izin)
115118            return  $ this  ->responseQueryException ($ error );
116119        }
117120    }
121+     
122+     public  function  student (Request   $ request )
123+     {
124+         $ branchId  = Auth::user ()->branch_id ;
125+ 
126+         $ users  = User::where (function  ($ query ) use  ($ request , $ branchId ) {
127+             if  (!is_null ($ branchId )) {
128+                 $ query ->where ('branch_id ' , $ branchId );
129+             }
130+ 
131+             if  (!is_null ($ request ->keyword )) {
132+                 $ query ->where ('name ' , 'like ' , "% $ request ->keyword % " )
133+                     ->orWhere ('username ' , 'like ' , "% $ request ->keyword % " )
134+                     ->orWhere ('email ' , 'like ' , "% $ request ->keyword % " );
135+             }
136+         })->where ('role_id ' , 9 )->paginate ($ request ->showitem  ?? 5 );
137+         
138+         $ users ->appends ($ request ->query ());
139+ 
140+         $ view  = $ request ->ajax () ? 'list-student '  : 'student ' ;
141+ 
142+         return  view ('pages.izin. '  . $ view , compact ('users ' ));
143+     }
144+     
145+     public  function  list (Request   $ request , User   $ user )
146+     {
147+         $ branchId  = Auth::user ()->branch_id ;
148+         $ userId    = $ user ->id ;
149+ 
150+         if  ((!is_null ($ branchId ) and  $ branchId  !== $ user ->branch_id ) or  $ user ->role_id  !== 9 ) abort (403 );
151+ 
152+         $ izin  = Izin::where (function ($ query ) use  ($ request ) {
153+             if  (!is_null ($ request ->start ) and  !is_null ($ request ->end )) {
154+                 $ query ->whereBetween ('start ' , [$ request ->start , $ request ->end ])
155+                     ->orWhereBetween ('end ' , [$ request ->start , $ request ->end ]);
156+             }
157+             if  (!is_null ($ request ->keyword )) {
158+                 $ query ->where ('name ' , 'like ' , "% $ request ->keyword % " )
159+                     ->orWhere ('information ' , 'like ' , "% $ request ->keyword % " );
160+             }
161+         })->where ('user_id ' , $ userId )->paginate ($ request ->showitem  ?? 5 );
162+ 
163+         $ izin ->appends ($ request ->query ());
164+ 
165+         $ view  = $ request ->ajax () ? 'izin-view-list '  : 'izin-view ' ;
166+ 
167+         return  view ('pages.izin. '  . $ view , compact ('izin ' , 'userId ' ));
168+     }
169+     
170+     public  function  approved (Request   $ request , Izin   $ izin )
171+     {
172+         $ request ->validate ([
173+             'approved '  => 'required ' 
174+         ]);
175+ 
176+         if  (!is_null ($ izin ->approved )) abort (400 );
177+ 
178+         $ token  = Auth::user ()->branch ->telegram ;
179+         
180+         try  {
181+             $ izin ->update ($ request ->all ());
182+             if  ($ izin ->approved  == 1 ) IzinJob::dispatch ($ token , $ izin );
183+             return  $ this  ->success ('Successfuly update data izin! ' );
184+         } catch  (QueryException   $ error ) {
185+             return  $ this  ->responseQueryException ($ error );
186+         }
187+     }
118188}
0 commit comments