From b2b68ca6ff1b8fa33d6d254ef236c5df92f1d1b6 Mon Sep 17 00:00:00 2001
From: gazandic <gazandic@gmail.com>
Date: Tue, 5 Apr 2016 17:18:07 +0700
Subject: [PATCH] selesai

---
 app/Http/Controllers/RoleController.php       | 20 ++--
 app/Http/Controllers/ScheduleController.php   | 37 +++++--
 app/Http/Controllers/TpsController.php        | 14 ++-
 app/Http/Controllers/UserController.php       |  2 +
 app/Http/Middleware/CurrentTps.php            |  3 +
 app/Http/Middleware/EditSched.php             | 13 ++-
 app/Http/Middleware/ReadSched.php             |  3 +-
 app/Http/routes.php                           |  3 +-
 resources/views/menu/editSchedule.blade.php   |  2 +-
 resources/views/menu/insertSchedule.blade.php |  2 +-
 resources/views/menu/manageRole.blade.php     | 99 +++++++++++++++++++
 resources/views/menu/schedule.blade.php       | 25 +++--
 resources/views/menu/tps.blade.php            |  4 +-
 resources/views/menu/user.blade.php           | 16 +--
 14 files changed, 189 insertions(+), 54 deletions(-)
 create mode 100644 resources/views/menu/manageRole.blade.php

diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php
index 088f67f..72801ef 100644
--- a/app/Http/Controllers/RoleController.php
+++ b/app/Http/Controllers/RoleController.php
@@ -16,8 +16,8 @@ class RoleController extends Controller
 
     public function __construct()
     {
-        //$this->middleware('auth');
-        //$this->middleware('user.admin');
+        $this->middleware('auth');
+        $this->middleware('user.admin');
         //$this->user_roles = Auth::user()->roles()->get()->toArray();
     }
 
@@ -36,24 +36,20 @@ class RoleController extends Controller
     
     public function index($userId)
     {
-        return User::find($userId)->roles()->get();
+        return view('menu.manageRole', ['id'=>$userId,'dataRole' => User::find($userId)->roles()->get()]);
     }
 
     public function store($userId)
     {
-        $data = Input::json();
-        if (UsersRoles::create(["id_user"=>$userId, "id_role"=>$data->get('id_role')]))
-            return ["status"=>"ok"];
-        else
-            return ["status"=>"err"];
+        $data = Input::all();
+        if (UsersRoles::create(["id_user"=>$userId, "id_role"=>Input::get('id_role')])){}
+        return redirect('/user/'.$userId.'/role');
     }
 
     public function destroy($userId, $roleId)
     {
-        if (UsersRoles::where('id_user', $userId)->where('id_role', $roleId)->delete())
-            return ["status"=>"ok"];
-        else
-            return ["status"=>"err"];
+        if (UsersRoles::where('id_user', $userId)->where('id_role', $roleId)->delete()){}
+        return redirect('/user/'.$userId.'/role');
     }
 
 }
diff --git a/app/Http/Controllers/ScheduleController.php b/app/Http/Controllers/ScheduleController.php
index 5ed0b11..85a38c0 100644
--- a/app/Http/Controllers/ScheduleController.php
+++ b/app/Http/Controllers/ScheduleController.php
@@ -7,6 +7,7 @@ use Illuminate\Support\Facades\Auth;
 use App\Schedule;
 use App\Tps;
 use App\User;
+use App\UsersRoles;
 use Mail;
 use App\Http\Requests;
 use Illuminate\Support\Facades\Input;
@@ -25,6 +26,7 @@ class ScheduleController extends Controller
             'index',
             'show',
         ]]);
+        if(Auth::user())
         $this->user_roles = Auth::user()->roles()->get()->toArray();
     }
 
@@ -48,6 +50,11 @@ class ScheduleController extends Controller
         {
             $all = Schedule::all();
         } 
+        else if ($this->has_role('edit_schedule'))
+        {
+            $all = Schedule::where('id_tps',Tps::where('id_manager',Auth::user()->
+                id)->get()->toArray()[0]['id'])->get();
+        } 
         else 
         {
             $all = Schedule::where('id_user', Auth::user()->id)->get();
@@ -95,7 +102,7 @@ class ScheduleController extends Controller
     public function show($id)
     {
         // viewnya pake get
-        if ($this->has_role('all_schedule')||$this->has_role('edit_schedule'))
+        if ($this->has_role('all_schedule'))
         {
             return Schedule::find($id);
         }else{
@@ -106,7 +113,7 @@ class ScheduleController extends Controller
 
     public function edit($id)
     {
-        if ($this->has_role('all_schedule')||$this->has_role('edit_schedule'))
+        if ($this->has_role('all_schedule'))
         {
             return view('menu.editSchedule',
              ['id' => $id,
@@ -123,11 +130,20 @@ class ScheduleController extends Controller
         $sched = Schedule::find($id);
         if ($this->has_role('all_schedule'))
         {
-            $sched = Schedule::find($id);
+            if(Input::has('id_tps'))
             $sched->id_tps = Input::get('id_tps');
+            if(Input::has('id_user'))
             $sched->id_user = Input::get('id_user');
-            $sched->time = Input::get('time','');
-            $sched->amount = Input::get('amount',1);
+            if(Input::has('time'))
+            $sched->time = Input::get('time');
+            if(Input::has('amount'))
+            $sched->amount = Input::get('amount');
+            $sched->is_done = Input::get('is_done');
+            $sched->save();
+            return redirect('/schedule');
+        }
+        else if ($this->has_role('edit_schedule'))
+        {
             $sched->is_done = Input::get('is_done');
             $sched->save();
             $tps = Tps::find($sched->id_tps);
@@ -139,13 +155,18 @@ class ScheduleController extends Controller
                 $tps->is_full = 1;
             }
             $tps->save();
+            return redirect('/schedule');
 
         } 
-        return redirect('/schedule');
+        else{
+            return response('Unauthorized', 403);
+        }
     }
 
     public function destroy($id)
     {
+
+        if ($this->has_role('all_schedule'))
         Schedule::find($id)->delete();
         return redirect('/schedule');
     }
@@ -155,8 +176,8 @@ class ScheduleController extends Controller
         $data = [
             'content' => $notif,
         ];
-        $user = User::findOrFail(Input::get('id_user'));
-        Mail::send('email.notification', $data, function ($message) use ($user) {
+        $user = User::find(UsersRoles::where('id_role',7)->get()->toArray()[0]['id_user']); 
+        Mail::send('email.notification', $data, function ($message) use ($user)  {
             $message->from(env('MAIL_USERNAME', 'user@host.suffix'), 'Notifikasi');
             $message->to($user->email)->subject('Notifikasi Status TPS');
         });
diff --git a/app/Http/Controllers/TpsController.php b/app/Http/Controllers/TpsController.php
index 223aed7..469a242 100644
--- a/app/Http/Controllers/TpsController.php
+++ b/app/Http/Controllers/TpsController.php
@@ -17,15 +17,15 @@ class TpsController extends Controller
     {
         $this->middleware('auth');
         $this->middleware('tps', ['except' => [
-            'index',
             'store',
             'create',
         ]]);
         $this->middleware('tps.admin', ['only' => [
-            'index',
             'store',
             'create',
         ]]);
+
+        if(Auth::user())
         $this->user_roles = Auth::user()->roles()->get()->toArray();
     }
 
@@ -45,8 +45,14 @@ class TpsController extends Controller
     public function index()
     {
         $arr = [];
-        $all = Tps::all();
-
+        if ($this->has_role('all_tps'))
+        {
+            $all = Tps::all();
+        } 
+        else 
+        {
+            $all = Tps::where('id_manager', Auth::user()->id)->get();
+        }
         foreach ($all as $tps) {
             $tmp = [];
             $tmp = $tps;
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index aaf51fc..ff94410 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -24,6 +24,8 @@ class UserController extends Controller
             'store',
             'create',
         ]]);
+
+        if(Auth::user())
         $this->user_roles = Auth::user()->roles()->get()->toArray();
     }
 
diff --git a/app/Http/Middleware/CurrentTps.php b/app/Http/Middleware/CurrentTps.php
index 968d970..edb87f9 100644
--- a/app/Http/Middleware/CurrentTps.php
+++ b/app/Http/Middleware/CurrentTps.php
@@ -36,6 +36,9 @@ class CurrentTps
         {
             return $next($request);
         }
+        if (!$param || 
+            $param['tps']==null)
+            return $next($request);
 
         $tps = Tps::find($param['tps']);
         $id_mgr = ($tps ? $tps->id_manager : null);
diff --git a/app/Http/Middleware/EditSched.php b/app/Http/Middleware/EditSched.php
index bb98879..209d71e 100644
--- a/app/Http/Middleware/EditSched.php
+++ b/app/Http/Middleware/EditSched.php
@@ -4,6 +4,8 @@ namespace App\Http\Middleware;
 
 use Closure;
 use Illuminate\Support\Facades\Auth;
+use App\Schedule;
+use App\Tps;
 
 class EditSched
 {
@@ -35,15 +37,20 @@ class EditSched
         {
             return $next($request);
         }
+        if (!$param || 
+            $param['schedule']==null)
+            return $next($request);
 
         // schedule null means create new schedule which requires only admin
-        $schedule = $param ? Schedule::find($param->has('schedule')) : null;             
-        $id_user = ($schedule ? $schedule->id_user : null);
-        $isAuthorizedUser = $isAuthorizedUser && ($id_user && $id_user == $user->id);   
+        $schedule = $param ? Schedule::find($param['schedule']) : null;  
+        $id_tps = ($schedule ? $schedule->id_tps : null);
+        $id_user = $user->id;
+        $isAuthorizedUser = $isAuthorizedUser && ($id_user && $id_tps && $id_tps ==Tps::where('id_manager',$user->id)->get()->toArray()[0]['id'] );   
         
         /* User id match */
         if ($isAuthorizedUser)        
         {
+            // dd($request);
             return $next($request);
         }
 
diff --git a/app/Http/Middleware/ReadSched.php b/app/Http/Middleware/ReadSched.php
index 04ccbed..3381181 100644
--- a/app/Http/Middleware/ReadSched.php
+++ b/app/Http/Middleware/ReadSched.php
@@ -36,9 +36,8 @@ class ReadSched
         {
             return $next($request);
         }
-
         // schedule null means get all schedule of current user
-        $schedule = $param ? Schedule::find($param->has('schedule')) : null;
+        $schedule = $param ? Schedule::find($param['schedule']) : null;
         $id_user = ($schedule ? $schedule->id_user : null);     
         $isAuthorizedUser = $isAuthorizedUser && (!$id_user || $id_user == $user->id);      
         
diff --git a/app/Http/routes.php b/app/Http/routes.php
index 189f4ab..2629dd5 100644
--- a/app/Http/routes.php
+++ b/app/Http/routes.php
@@ -14,8 +14,7 @@
 Route::group(['middleware' => 'web'], function () {
     Route::auth();
 
-    Route::get('/', 'HomeController@index');              // homnya kan cm 1 
-    Route::get('/home', 'HomeController@index');
+    Route::get('/', 'HomeController@index');
 
     Route::resource('user', 'UserController');
     Route::resource('tps', 'TpsController');
diff --git a/resources/views/menu/editSchedule.blade.php b/resources/views/menu/editSchedule.blade.php
index 7b62865..5f82b80 100644
--- a/resources/views/menu/editSchedule.blade.php
+++ b/resources/views/menu/editSchedule.blade.php
@@ -27,7 +27,7 @@
       <input type="hidden" name="_method" value="put" />
         <div class="line line-dashed b-b line-lg pull-in"></div>
         <div class="form-group">
-          <label class="col-sm-2 control-label">Nama Pengelola</label>
+          <label class="col-sm-2 control-label">Nama Supir Truk</label>
           <div class="col-sm-10">
             <select name="id_user" ui-jq="chosen" class="w-full">
                 <optgroup label="Nama Pengelola">
diff --git a/resources/views/menu/insertSchedule.blade.php b/resources/views/menu/insertSchedule.blade.php
index a8d5783..11a5cfb 100644
--- a/resources/views/menu/insertSchedule.blade.php
+++ b/resources/views/menu/insertSchedule.blade.php
@@ -28,7 +28,7 @@
 
         <div class="line line-dashed b-b line-lg pull-in"></div>
         <div class="form-group">
-          <label class="col-sm-2 control-label">Nama Pengelola</label>
+          <label class="col-sm-2 control-label">Nama Supir Truk</label>
           <div class="col-sm-10">
             <select name="id_user" ui-jq="chosen" class="w-full">
                 <optgroup label="Nama Pengelola">
diff --git a/resources/views/menu/manageRole.blade.php b/resources/views/menu/manageRole.blade.php
new file mode 100644
index 0000000..4c3561f
--- /dev/null
+++ b/resources/views/menu/manageRole.blade.php
@@ -0,0 +1,99 @@
+@extends('layouts.app')
+
+@section('content')
+<div class="hbox hbox-auto-xs hbox-auto-sm ng-scope">
+                <div class="col">
+                  <div class="app-content-body ">
+                      <div class="bg-light lter">    
+                          <ul class="breadcrumb bg-grey-breadcrumb m-b-none">
+                            <li><a href="#" class="btn no-shadow" ui-toggle-class="app-aside-folded" target=".app">
+                              <i class="icon-bdg_expand1 text"></i>
+                              <i class="icon-bdg_expand2 text-active"></i>
+                            </a>   </li>
+                            <li><a href="{{ url('/') }}">Home</a></li>               
+                            <li><i class="fa fa-angle-right"></i><a href="{{ url('/user') }}">User</a></li>
+                            <li class="active"><i class="fa fa-angle-right"></i>Role</li>
+                          </ul>
+                      </div>
+                    <div class="wrapper-lg bg-light">
+                           <div class="row">
+                              <div class="col-md-12">
+                                <div class="panel panel-default">
+                                  <div class="panel-heading font-semibold">
+                                    Role Table 
+                                  </div>
+                                  <div class="table-responsive">
+                                    <table class="table table-striped b-t b-light">
+                                      <thead>
+                                        <tr>	
+                                          <th>nama role</th>
+                                          <th>terpakai</th>
+                                        </tr>
+                                      </thead>
+                                      <tbody>
+                                        <?php for($i=1;$i<=7;$i++){?>
+                                        <tr>
+                                          <td>
+                                          <?php switch ($i) {
+                                            case 1:
+                                              echo "Current User";
+                                              break;
+                                            case 2:
+                                              echo "All User";
+                                              break;
+                                            case 3:
+                                              echo "Current TPS";
+                                              break;
+                                            case 4:
+                                              echo "All TPS";
+                                              break;
+                                            case 5:
+                                              echo "Read Schedule";
+                                              break;
+                                            case 6:
+                                              echo "Edit Schedule";
+                                              break;
+                                            case 7:
+                                              echo "All Schedule";
+                                              break;
+                                          }?>
+                                          </td>
+                                          <td>
+                                          <?php 
+                                            $bool = false;
+                                            foreach ($dataRole as $role) {
+                                              if($role->id==$i){
+                                                $bool = true;
+                                                break;
+                                              }
+                                            }
+                                            if($bool){
+                                          ?>  
+                                          <form class="col-md-12 form-horizontal" action="<?php echo URL::to('/user');?>/<?=$id?>/role/<?=$i?>" method="POST">
+                                          {!! csrf_field() !!}       
+                                          <input type="hidden" name="_method" value="DELETE">
+                                            <button type="submit" class="active btn m-b-sm m-r-sm btn-dark"><i class="fa fa-check text-success text-active"></i></button>
+                                          </form>
+                                          <?php } else{?>
+                                          <form class="col-md-12 form-horizontal" action="<?php echo URL::to('/user');?>/<?=$id?>/role" method="POST">
+                                          {!! csrf_field() !!}       
+                                          <input type="hidden" name="id_role" value="<?=$i?>">
+                                            <button type="submit" class="active btn m-b-sm m-r-sm btn-dark"><i class="fa fa-times text-danger text-active"></i></button>
+                                          </form>
+                                          <?php } ?>
+                                          </td>
+
+                                        </tr>
+                                        <?php } ?>
+
+                                      </tbody>
+                                    </table>
+                                  </div>
+                                </div>
+                              </div>
+                            </div>
+                        </div>
+                  </div>
+                </div>
+            </div>
+@endsection
\ No newline at end of file
diff --git a/resources/views/menu/schedule.blade.php b/resources/views/menu/schedule.blade.php
index 7c61795..2b56945 100644
--- a/resources/views/menu/schedule.blade.php
+++ b/resources/views/menu/schedule.blade.php
@@ -71,7 +71,7 @@ foreach ($data as $jadwal ) {
                                   <div class="row wrapper-sm">
                                     <div class="col-sm-5">
                                       <select id="aksi2" class="input-sm form-control w-sm inline v-middle">
-                                        <option value="0">Bulk action</option>
+                                        <option value="0">Schedule done</option>
                                         <option value="1">Delete selected</option>
                                         <option value="2">Bulk edit</option>
                                       </select>
@@ -87,7 +87,7 @@ foreach ($data as $jadwal ) {
                                         </span>
                                       </div>
                                     </div>
-                                  </div>c
+                                  </div>
                                   <div class="table-responsive">
                                     <table class="table table-striped b-t b-light">
                                       <thead>
@@ -117,13 +117,20 @@ foreach ($data as $jadwal ) {
                                           <td><?php echo $jadwal->time;?></td>
                                           <td>
                                             <?php if($jadwal->is_done==1){?>
-                                            <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a>
+                                            <a class="active"><i class="fa fa-check text-success text-active"></i></a>
                                             <?php }else{?>
-                                            <a href ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a><?php }?>
+                                            <a class="active"><i class="fa fa-times text-danger text-active"></i></a>
+                                            <?php }?>
                                           </td>
                                         </tr>
                                         @endforeach
                                         </form>
+
+                                            <form id="doneForm" method="POST">
+                                            {!! csrf_field() !!}       
+                                            <input type="hidden" name="_method" value="PUT">
+                                            <input type="hidden" name="is_done" value="1">
+                                            </form>
                                       </tbody>
                                     </table>
                                   </div>
@@ -131,7 +138,7 @@ foreach ($data as $jadwal ) {
                                     <div class="row">
                                       <div class="col-sm-4 hidden-xs">
                                         <select id="aksi" class="input-sm form-control w-sm inline v-middle">
-                                          <option value="0">Bulk action</option>
+                                          <option value="0">Schedule done</option>
                                           <option value="1">Delete selected</option>
                                           <option value="2">Bulk edit</option>
                                         </select>
@@ -153,7 +160,9 @@ foreach ($data as $jadwal ) {
                                             lol=3;
                                           }
                                           if(lol==0){
-                                            window.location.href = '/templatePPL2/public/schedule';
+                                            var s = '/templatePPL2/public/schedule/'+id;
+                                            document.getElementById("doneForm").action = s;
+                                            document.getElementById("doneForm").submit();
                                           }
                                           if(lol==1){
                                             var s = '/templatePPL2/public/schedule/'+id;
@@ -181,7 +190,9 @@ foreach ($data as $jadwal ) {
                                             lol=3;
                                           }
                                           if(lol==0){
-                                            window.location.href = '/templatePPL2/public/schedule';
+                                            var s = '/templatePPL2/public/schedule/'+id;
+                                            document.getElementById("doneForm").action = s;
+                                            document.getElementById("doneForm").submit();
                                           }
                                           if(lol==1){
                                             var s = '/templatePPL2/public/schedule/'+id;
diff --git a/resources/views/menu/tps.blade.php b/resources/views/menu/tps.blade.php
index 983c06a..4f5a6ba 100644
--- a/resources/views/menu/tps.blade.php
+++ b/resources/views/menu/tps.blade.php
@@ -123,9 +123,9 @@ foreach ($data as $tps ) {
                                           <td><?php echo $tps->managerName;?></td>
                                           <td>
                                             <?php if($tps->is_full==0){?>
-                                            <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a>
+                                            <a  class="active"><i class="fa fa-check text-success text-active"></i></a>
                                             <?php }else{?>
-                                            <a href ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a><?php }?>
+                                            <a  class="active"><i class="fa fa-times text-danger text-active"></i></a><?php }?>
                                           </td>
                                         </tr>
                                         @endforeach
diff --git a/resources/views/menu/user.blade.php b/resources/views/menu/user.blade.php
index f6dcd92..1a374bd 100644
--- a/resources/views/menu/user.blade.php
+++ b/resources/views/menu/user.blade.php
@@ -33,7 +33,7 @@
                                   <div class="row wrapper-sm">
                                     <div class="col-sm-5">
                                       <select id="aksi2" class="input-sm form-control w-sm inline v-middle">
-                                        <option value="0">Bulk action</option>
+                                        <option value="0">Manage Role</option>
                                         <option value="1">Delete selected</option>
                                         <option value="2">Bulk edit</option>
                                       </select>
@@ -62,8 +62,6 @@
                                           <th>nama</th>
                                           <th>email</th>
                                           <th>password</th>
-                                          <th>role_id</th>
-                                          <th style="width:30px;"></th>
                                         </tr>
                                       </thead>
                                       <tbody>
@@ -76,12 +74,6 @@
                                           <td><?php echo $user->name;?></td>
                                           <td><?php echo $user->email;?></td>
                                           <td><?php echo $user->password;?></td>
-                                          <td><?php echo $user->role_id;?>
-
-                                          </td>
-                                          <td>
-                                            <a href class="active" ui-toggle-class><i class="fa fa-check text-success text-active"></i><i class="fa fa-times text-danger text"></i></a>
-                                          </td>
                                         </tr>
                                         @endforeach
                                         </form>
@@ -93,7 +85,7 @@
                                       
                                       <div class="col-sm-4 hidden-xs">
                                         <select id="aksi" class="input-sm form-control w-sm inline v-middle">
-                                          <option value="0">Bulk action</option>
+                                          <option value="0">Manage Role</option>
                                           <option value="1">Delete selected</option>
                                           <option value="2">Bulk edit</option>
                                         </select>
@@ -115,7 +107,7 @@
                                             lol=3;
                                           }
                                           if(lol==0){
-                                            window.location.href = '/templatePPL2/public/user';
+                                            window.location.href = '/templatePPL2/public/user/'+id+'/role';
                                           }
                                           if(lol==1){
                                             var s = '/templatePPL2/public/user/'+id;
@@ -143,7 +135,7 @@
                                             lol=3;
                                           }
                                           if(lol==0){
-                                            window.location.href = '/templatePPL2/public/user';
+                                            window.location.href = '/templatePPL2/public/user/'+id+'/role';
                                           }
                                           if(lol==1){
                                             var s = '/templatePPL2/public/user/'+id;
-- 
GitLab