Просмотр исходного кода

Merge branch 'waybill_ZD' of ssh://was.baoshi56.com:10022/var/git/bswas into rejected_LD

 Conflicts:
	routes/web.php
	tests/Unit/BillingModelTest.php
	tests/Unit/CarrierTest.php
	tests/Unit/CityTest.php
	tests/Unit/ProvinceTest.php
	tests/Unit/UnitTest.php
	tests/Unit/WaybillFinancialSnapshotTest.php
	tests/Unit/WaybillTest.php
LD 6 лет назад
Родитель
Сommit
eceb77fa46
100 измененных файлов с 9361 добавлено и 697 удалено
  1. 34 0
      app/Events/WaybillPriceModelEvent.php
  2. 0 107
      app/Http/Controllers/BillingModelsController.php
  3. 1 1
      app/Http/Controllers/CarTypesController.php
  4. 3 3
      app/Http/Controllers/CarriersController.php
  5. 1 1
      app/Http/Controllers/CitiesController.php
  6. 1 1
      app/Http/Controllers/ProvincesController.php
  7. 1 1
      app/Http/Controllers/UnitsController.php
  8. 33 0
      app/Http/Controllers/WaybillFinancialExceptedController.php
  9. 23 8
      app/Http/Controllers/WaybillFinancialSnapshotsController.php
  10. 194 0
      app/Http/Controllers/WaybillPriceModelsController.php
  11. 105 68
      app/Http/Controllers/WaybillsController.php
  12. 166 0
      app/Imports/WaybillPriceModelsImport.php
  13. 112 0
      app/Listeners/WaybillPriceModelListener.php
  14. 3 0
      app/Providers/EventServiceProvider.php
  15. 3 3
      app/Waybill.php
  16. 2 2
      app/WaybillAuditLog.php
  17. 16 0
      app/WaybillFinancialExcepted.php
  18. 1 1
      app/WaybillPayoff.php
  19. 2 2
      app/WaybillPriceModel.php
  20. 1 1
      config/users.php
  21. 3 2
      database/migrations/2019_11_22_094024_create_waybills_table.php
  22. 3 3
      database/migrations/2019_11_22_094057_create_waybill_payoffs_table.php
  23. 0 4
      database/migrations/2019_11_22_094128_create_waybill_financial_snapshots_table.php
  24. 6 0
      database/migrations/2019_11_22_094213_create_units_table.php
  25. 9 1
      database/migrations/2019_11_22_094241_create_provinces_table.php
  26. 306 1
      database/migrations/2019_11_22_094253_create_cities_table.php
  27. 9 8
      database/migrations/2019_11_22_094311_create_waybill_price_models_table.php
  28. 3 3
      database/migrations/2019_11_28_152321_create_waybill_audit_logs_table.php
  29. 1 0
      database/migrations/2019_12_03_174626_add_data_authorities_waybill.php
  30. 33 0
      database/migrations/2019_12_17_144623_create_waybill_financial_excepteds_table.php
  31. 2 2
      database/seeds/BillingModelsSeeder.php
  32. 1 1
      database/seeds/WaybillsCalculatesSeeder.php
  33. 1 1
      database/seeds/WaybillsSeeder.php
  34. 0 99
      resources/views/waybill/billingModel/index.blade.php
  35. 0 16
      resources/views/waybill/billingModel/menu.blade.php
  36. 16 6
      resources/views/waybill/create.blade.php
  37. 156 57
      resources/views/waybill/edit.blade.php
  38. 41 41
      resources/views/waybill/index.blade.php
  39. 10 3
      resources/views/waybill/menu.blade.php
  40. 24 11
      resources/views/waybill/waybillEdit.blade.php
  41. 56 11
      resources/views/waybill/waybillFinancialSnapshot/index.blade.php
  42. 60 37
      resources/views/waybill/waybillPriceModel/create.blade.php
  43. 65 42
      resources/views/waybill/waybillPriceModel/edit.blade.php
  44. 57 0
      resources/views/waybill/waybillPriceModel/import.blade.php
  45. 167 0
      resources/views/waybill/waybillPriceModel/index.blade.php
  46. 19 0
      resources/views/waybill/waybillPriceModel/menu.blade.php
  47. 8 3
      routes/web.php
  48. 3 3
      tests/Feature/WaybillsTest.php
  49. 5 5
      tests/Unit/CarrierTest.php
  50. 9 9
      tests/Unit/CityTest.php
  51. 8 8
      tests/Unit/ProvinceTest.php
  52. 3 3
      tests/Unit/UnitTest.php
  53. 89 0
      tests/Unit/WaybillFinancialExceptedTest.php
  54. 2 2
      tests/Unit/WaybillFinancialSnapshotTest.php
  55. 43 39
      tests/Unit/WaybillPriceModelTest.php
  56. 43 77
      tests/Unit/WaybillTest.php
  57. 5 0
      tests/codeCoverage/.css/bootstrap.min.css
  58. 0 0
      tests/codeCoverage/.css/custom.css
  59. 0 0
      tests/codeCoverage/.css/nv.d3.min.css
  60. 5 0
      tests/codeCoverage/.css/octicons.css
  61. 122 0
      tests/codeCoverage/.css/style.css
  62. 1 0
      tests/codeCoverage/.icons/file-code.svg
  63. 1 0
      tests/codeCoverage/.icons/file-directory.svg
  64. 5 0
      tests/codeCoverage/.js/bootstrap.min.js
  65. 0 0
      tests/codeCoverage/.js/d3.min.js
  66. 61 0
      tests/codeCoverage/.js/file.js
  67. 1 0
      tests/codeCoverage/.js/jquery.min.js
  68. 1 0
      tests/codeCoverage/.js/nv.d3.min.js
  69. 3 0
      tests/codeCoverage/.js/popper.min.js
  70. 196 0
      tests/codeCoverage/AuditLog.php.html
  71. 180 0
      tests/codeCoverage/Authority.php.html
  72. 349 0
      tests/codeCoverage/BillingModel.php.html
  73. 115 0
      tests/codeCoverage/CarType.php.html
  74. 115 0
      tests/codeCoverage/Carrier.php.html
  75. 199 0
      tests/codeCoverage/City.php.html
  76. 112 0
      tests/codeCoverage/Commodity.php.html
  77. 218 0
      tests/codeCoverage/Console/Commands/RedisSubscribe.php.html
  78. 287 0
      tests/codeCoverage/Console/Commands/dashboard.html
  79. 120 0
      tests/codeCoverage/Console/Commands/index.html
  80. 178 0
      tests/codeCoverage/Console/Kernel.php.html
  81. 286 0
      tests/codeCoverage/Console/dashboard.html
  82. 147 0
      tests/codeCoverage/Console/index.html
  83. 226 0
      tests/codeCoverage/Exceptions/Handler.php.html
  84. 284 0
      tests/codeCoverage/Exceptions/dashboard.html
  85. 119 0
      tests/codeCoverage/Exceptions/index.html
  86. 199 0
      tests/codeCoverage/Exports/GoodsNeateningExcelExport.php.html
  87. 403 0
      tests/codeCoverage/Exports/RejectedExport.php.html
  88. 171 0
      tests/codeCoverage/Exports/UserExport.php.html
  89. 253 0
      tests/codeCoverage/Exports/WaybillExport.php.html
  90. 307 0
      tests/codeCoverage/Exports/dashboard.html
  91. 203 0
      tests/codeCoverage/Exports/index.html
  92. 188 0
      tests/codeCoverage/Http/Controllers/Auth/ForgotPasswordController.php.html
  93. 276 0
      tests/codeCoverage/Http/Controllers/Auth/LoginController.php.html
  94. 314 0
      tests/codeCoverage/Http/Controllers/Auth/PasswordController.php.html
  95. 315 0
      tests/codeCoverage/Http/Controllers/Auth/RegisterController.php.html
  96. 195 0
      tests/codeCoverage/Http/Controllers/Auth/ResetPasswordController.php.html
  97. 197 0
      tests/codeCoverage/Http/Controllers/Auth/VerificationController.php.html
  98. 313 0
      tests/codeCoverage/Http/Controllers/Auth/dashboard.html
  99. 261 0
      tests/codeCoverage/Http/Controllers/Auth/index.html
  100. 467 0
      tests/codeCoverage/Http/Controllers/AuthorityController.php.html

+ 34 - 0
app/Events/WaybillPriceModelEvent.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Events;
+
+use App\WaybillPriceModel;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Broadcasting\PrivateChannel;
+
+class WaybillPriceModelEvent
+{
+    use  SerializesModels;
+
+    public $waybillPriceModel;
+
+    /**
+     * Create a new event instance.
+     *
+     * @return void
+     */
+    public function __construct(WaybillPriceModel $waybillPriceModel)
+    {
+        $this->waybillPriceModel=$waybillPriceModel;
+    }
+
+    /**
+     * Get the channels the event should broadcast on.
+     *
+     * @return \Illuminate\Broadcasting\Channel|array
+     */
+    public function broadcastOn()
+    {
+        return new PrivateChannel('channel-name');
+    }
+}

+ 0 - 107
app/Http/Controllers/BillingModelsController.php

@@ -1,107 +0,0 @@
-<?php
-
-namespace App\Http\Controllers;
-
-use App\BillingModel;
-use App\Carrier;
-use App\Province;
-use App\Unit;
-use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Auth;
-use Illuminate\Support\Facades\Gate;
-use Illuminate\Support\Facades\Validator;
-
-class BillingModelsController extends Controller
-{
-    public function index()
-    {
-        if(!Gate::allows('计费模型-查询')){ return redirect(url('/'));  }
-        $billingModels= BillingModel::paginate(50);
-        return view('waybill.billingModel.index',['billingModels'=>$billingModels]);
-    }
-
-
-    public function create()
-    {
-        if(!Gate::allows('计费模型-录入')){ return redirect(url('/'));  }
-        $carriers=Carrier::get();
-        $provinces=Province::with('cities')->get();
-        $units=Unit::get();
-        return view('waybill.billingModel.create',['carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]);
-    }
-
-
-    public function store(Request $request)
-    {
-        if(!Gate::allows('计费模型-录入')){ return redirect(url('/'));  }
-        $this->validateBillingModel($request)->validate();
-        $billingModel=$request->input('BillingModel');
-        BillingModel::create($billingModel);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-        return redirect('billingModel')->with('successTip','新计费模型录入成功');
-    }
-
-
-
-    public function edit($id)
-    {
-        if(!Gate::allows('计费模型-编辑')){ return redirect(url('/'));  }
-        $billingModel=BillingModel::find($id);
-        $carriers=Carrier::get();
-        $provinces=Province::with('cities')->get();
-        $units=Unit::get();
-        return view('waybill.billingModel.edit',['billingModel'=>$billingModel,'carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]);
-    }
-
-
-    public function update(Request $request, $id)
-    {
-        if(!Gate::allows('计费模型-编辑')){ return redirect(url('/'));  }
-        $this->validateBillingModel($request)->validate();
-        $billingModel=BillingModel::find($id);
-        $billingModel->fill($request->input('BillingModel'));
-        if ($billingModel->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-            return redirect('billingModel')->with('successTip','新计费模型修改成功');
-        }
-    }
-
-    public function destroy($id)
-    {
-        if(!Gate::allows('计费模型-删除')){ return redirect(url('/'));  }
-        $billingModel=BillingModel::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($billingModel),Auth::user()['id']);
-        $result=$billingModel->delete();
-        return ['success'=>$result];
-    }
-
-    protected function validateBillingModel(Request $request){
-        $min = $request->input('BillingModel.range_min');
-        $validator= Validator::make($request->input(),[
-            'BillingModel.province_id'=>'required|integer',
-            'BillingModel.carrier_id'=>'required|integer',
-            'BillingModel.unit_id'=>'required|integer',
-            'BillingModel.city_id'=>'required|Integer',
-            'BillingModel.range_min'=> 'required|min:0|numeric',
-            'BillingModel.range_max'=> "required|min:{$min}|numeric",
-            'BillingModel.unit_price'=>'required|min:0|numeric',
-            'BillingModel.initial_weight'=>'required|min:0|numeric',
-        ],[
-            'required'=>':attribute 为必填项',
-            'min'     =>':attribute 数值过小',
-            'max'      => ':attribute 数值过大',
-            'numeric' =>':attribute 应为数字',
-            'integer'=> ':attribute 选择错误',
-        ],[
-            'BillingModel.province_id'=>'省份',
-            'BillingModel.carrier_id'=>'承运商',
-            'BillingModel.unit_id'=>'计重单位',
-            'BillingModel.city_id'=>'城市',
-            'BillingModel.range_min'=>'价格区间最小值',
-            'BillingModel.range_max'=>'价格区间最大值',
-            'BillingModel.unit_price'=>'单价',
-            'BillingModel.initial_weight'=>'始重',
-        ]);
-        return $validator;
-    }
-}

+ 1 - 1
app/Http/Controllers/CarTypesController.php

@@ -14,7 +14,7 @@ class CarTypesController extends Controller
     public function index()
     {
         if(!Gate::allows('车型-查询')){ return redirect(url('/'));  }
-        $carTypes=CarType::paginate(10);
+        $carTypes=CarType::paginate(50);
         return view('maintenance.carType.index',['carTypes'=>$carTypes]);
     }
 

+ 3 - 3
app/Http/Controllers/CarriersController.php

@@ -14,7 +14,7 @@ class CarriersController extends Controller
     public function index()
     {
         if(!Gate::allows('承运商-查询')){ return redirect(url('/'));  }
-            $carriers=Carrier::paginate(10);
+            $carriers=Carrier::paginate(50);
             return view('maintenance.carrier.index',['carriers'=>$carriers]);
     }
 
@@ -68,11 +68,11 @@ class CarriersController extends Controller
     protected function validatorCarrier(Request $request){
         $validator=Validator::make($request->input(),[
             'Carrier.name'=>'max:50|required',
-            'Carrier.mobile'=>'digits:11|required|integer',
+            'Carrier.mobile'=>['required','regex:/^(0\d{6,10})|(1[3|4|5|7|8][0-9]\d{4,8})$/'],
         ],[
             'digits_between'=>':attribute 最小一位,最大五十位',
             'required'=>':attribute 不应为空',
-            'digits'=>':attribute 联系方式应为11位',
+            'regex'=>':attribute 输入有误',
             'integer'=>':attribute 应为数值',
         ],[
             'Carrier.name'=>'承运商名称',

+ 1 - 1
app/Http/Controllers/CitiesController.php

@@ -14,7 +14,7 @@ class CitiesController extends Controller
     public function index()
     {
         if(!Gate::allows('城市-查询')){ return redirect(url('/'));  }
-        $cities=City::paginate(10);
+        $cities=City::paginate(50);
         return view('maintenance.city.index',['cities'=>$cities]);
     }
 

+ 1 - 1
app/Http/Controllers/ProvincesController.php

@@ -13,7 +13,7 @@ class ProvincesController extends Controller
     public function index()
     {
         if(!Gate::allows('省份-查询')){ return redirect(url('/'));  }
-        $provinces=Province::paginate(10);
+        $provinces=Province::paginate(50);
         return view('maintenance.province.index',['provinces'=>$provinces]);
     }
 

+ 1 - 1
app/Http/Controllers/UnitsController.php

@@ -14,7 +14,7 @@ class UnitsController extends Controller
     public function index()
     {
         if(!Gate::allows('计量单位-查询')){ return redirect(url('/'));  }
-        $units=Unit::paginate(10);
+        $units=Unit::paginate(50);
         return view('maintenance.unit.index',['units'=>$units]);
     }
 

+ 33 - 0
app/Http/Controllers/WaybillFinancialExceptedController.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\WaybillPriceModel;
+use App\Events\WaybillPriceModelEvent;
+use App\WaybillFinancialExcepted;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Event;
+use Illuminate\Support\Facades\Gate;
+
+class WaybillFinancialExceptedController extends Controller
+{
+    public function index(Request $request)
+    {
+        if(!Gate::allows('财务报表-查询')){ return redirect(url('/'));  }
+        $waybillFinancialSnapshots=WaybillFinancialExcepted::orderBy('id', 'DESC');
+        if ($request->input('type')=='直发车'){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('json_content','like','%直发车%');
+        }
+        if($request->input('type')=='专线'){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('json_content','like','%专线%');
+        }
+        if ($request->input('created_at_start')){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('created_at','>',$request->input('created_at_start'));
+        }
+        if ($request->input('created_at_end')){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('created_at','<',$request->input('created_at_end'));
+        }
+        $waybillFinancialSnapshots=$waybillFinancialSnapshots->paginate(50);
+        return view('waybill.waybillFinancialSnapshot.index',['waybillFinancialSnapshots'=>$waybillFinancialSnapshots,'filterData'=>$request->input(),'type'=>$request->input('type'),'excepted'=>true]);
+    }
+}

+ 23 - 8
app/Http/Controllers/WaybillFinancialSnapshotsController.php

@@ -4,16 +4,31 @@ namespace App\Http\Controllers;
 
 use App\Exports\WaybillExport;
 use App\WaybillFinancialSnapshot;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Maatwebsite\Excel\Facades\Excel;
 
 class WaybillFinancialSnapshotsController extends Controller
 {
-    public function index()
+    public function index(Request $request)
     {
         if(!Gate::allows('财务报表-查询')){ return redirect(url('/'));  }
-        $waybillFinancialSnapshots=WaybillFinancialSnapshot::paginate(10);
-        return view('waybill.waybillFinancialSnapshot.index',['waybillFinancialSnapshots'=>$waybillFinancialSnapshots]);
+        $waybillFinancialSnapshots=WaybillFinancialSnapshot::orderBy('id', 'DESC');
+        if ($request->input('type')=='直发车'){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('json_content','like','%直发车%');
+        }
+        if($request->input('type')=='专线'){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('json_content','like','%专线%');
+        }
+        if ($request->input('created_at_start')){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('created_at','>',$request->input('created_at_start'));
+        }
+        if ($request->input('created_at_end')){
+            $waybillFinancialSnapshots=$waybillFinancialSnapshots->where('created_at','<',$request->input('created_at_end'));
+        }
+        $waybillFinancialSnapshots=$waybillFinancialSnapshots->paginate(50);
+        return view('waybill.waybillFinancialSnapshot.index',['waybillFinancialSnapshots'=>$waybillFinancialSnapshots,'filterData'=>$request->input(),'type'=>$request->input('type')]);
     }
 
     public function export($id){
@@ -58,12 +73,12 @@ class WaybillFinancialSnapshotsController extends Controller
             $waybillFinancialSnapshot=json_decode($waybillFinancialSnapshot->json_content);
             $waybillAuditor='';
             $dispatchAuditor='';
-            foreach ($waybillFinancialSnapshot->waybill->audit_logs as $auditLog){
-                if ($auditLog->audit_stage=="运单阶段"){
-                    $waybillAuditor=$auditLog->user->name;
+            foreach ($waybillFinancialSnapshot->waybill->waybillAuditLogs as $waybillAuditLog){
+                if ($waybillAuditLog->audit_stage=="运单阶段"){
+                    $waybillAuditor=$waybillAuditLog->user->name;
                 }
-                if ($auditLog->audit_stage=="调度阶段"){
-                    $dispatchAuditor=$auditLog->user->name;
+                if ($waybillAuditLog->audit_stage=="调度阶段"){
+                    $dispatchAuditor=$waybillAuditLog->user->name;
                 }
             };
             $w=[

+ 194 - 0
app/Http/Controllers/WaybillPriceModelsController.php

@@ -0,0 +1,194 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\WaybillPriceModel;
+use App\Carrier;
+use App\City;
+use App\Events\WaybillPriceModelEvent;
+use App\Imports\WaybillPriceModelsImport;
+use App\Province;
+use App\Unit;
+use function GuzzleHttp\Psr7\str;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Gate;
+use Illuminate\Support\Facades\Validator;
+use Maatwebsite\Excel\Facades\Excel;
+
+class WaybillPriceModelsController extends Controller
+{
+    public function index(Request $request)
+    {
+        if(!Gate::allows('计费模型-查询')){ return redirect(url('/'));  }
+        $carriers=Carrier::get();
+        $provinces=Province::get();
+        $data=$request->input();
+        if ($data){
+            $waybillPriceModels= WaybillPriceModel::orderBy('id', 'DESC');
+            if ($request->input('carrier_id')){
+                $waybillPriceModels=$waybillPriceModels->where('carrier_id',$request->input('carrier_id'));
+            }
+            if ($request->input('province_id')){
+                $waybillPriceModels=$waybillPriceModels->where('province_id',$request->input('province_id'));
+            }
+            $waybillPriceModels=$waybillPriceModels->paginate($request->input('paginate')?$request->input('paginate'):50);
+            return view('waybill.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
+        }else{
+            $waybillPriceModels= WaybillPriceModel::paginate(50);
+            return view('waybill.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
+        }
+    }
+
+
+    public function create()
+    {
+        if(!Gate::allows('计费模型-录入')){ return redirect(url('/'));  }
+        $carriers=Carrier::get();
+        $provinces=Province::get();
+        $units=Unit::get();
+        return view('waybill.waybillPriceModel.create',['carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]);
+    }
+
+    public function getCities($province_id){
+        $cities=City::where('province_id',$province_id)->get();
+        return ['cities'=>$cities];
+    }
+
+
+    public function store(Request $request)
+    {
+        if(!Gate::allows('计费模型-录入')){ return redirect(url('/'));  }
+        $this->validateWaybillPriceModel($request)->validate();
+        $waybillPriceModel=$request->input('WaybillPriceModel');
+        $waybillPriceModelIs=WaybillPriceModel::where('carrier_id',$waybillPriceModel['carrier_id'])->where('province_id',$waybillPriceModel['province_id'])->where('unit_id',$waybillPriceModel['unit_id']);
+        if (isset($waybillPriceModel['city_id'])){
+            $waybillPriceModelIs=$waybillPriceModelIs->where('city_id',$waybillPriceModel['city_id']);
+        }
+        if (isset($waybillPriceModel['range_min'])){
+            $waybillPriceModelIs=$waybillPriceModelIs->where('range_min',$waybillPriceModel['range_min']);
+        }
+        if (isset($waybillPriceModel['range_max'])){
+            $waybillPriceModelIs=$waybillPriceModelIs->where('range_max',$waybillPriceModel['range_max']);
+        }
+        $waybillPriceModelIs=$waybillPriceModelIs->first();
+        if (!$waybillPriceModelIs){
+            if (isset($waybillPriceModel['city_id'])){
+                $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NULL',[$waybillPriceModel['carrier_id'],$waybillPriceModel['province_id']])->first();
+                if ($waybillPriceModelProvince){
+                    return redirect()->back()->with('successTip','已存在省份模型,无需录入城市模型');
+                }
+            }else{
+                $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NOT NULL',[$waybillPriceModel['carrier_id'],$waybillPriceModel['province_id']])->first();
+                if ($waybillPriceModelProvince){
+                    return redirect()->back()->with('successTip','已存在城市模型,无法录入省份模型');
+                }
+            }
+            if ($waybillPriceModel['base_fee']==null){ unset($waybillPriceModel['base_fee']);}
+            if ($waybillPriceModel['initial_weight']==null){unset($waybillPriceModel['initial_weight']);}
+            $waybillPriceModel=WaybillPriceModel::create($waybillPriceModel);
+            event(new WaybillPriceModelEvent($waybillPriceModel));
+            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            return redirect('waybill/waybillPriceModel')->with('successTip','新计费模型录入成功');
+        }else{
+            return redirect()->back()->with('successTip','该计费模型已存在');
+        }
+    }
+
+
+
+    public function edit($id)
+    {
+        if(!Gate::allows('计费模型-编辑')){ return redirect(url('/'));  }
+        $waybillPriceModel=WaybillPriceModel::find($id);
+        $carriers=Carrier::get();
+        $provinces=Province::get();
+        $cities=City::where('province_id',$waybillPriceModel->province_id)->get();
+        $units=Unit::get();
+        return view('waybill.waybillPriceModel.edit',['waybillPriceModel'=>$waybillPriceModel,'carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units,'cities'=>$cities]);
+    }
+
+
+    public function update(Request $request, $id)
+    {
+        if(!Gate::allows('计费模型-编辑')){ return redirect(url('/'));  }
+        $this->validateWaybillPriceModel($request)->validate();
+        $waybillPriceModel=WaybillPriceModel::find($id);
+        $data=$request->input('WaybillPriceModel');
+        if ($data['base_fee']==null){ unset($data['base_fee']);}
+        if ($data['initial_weight']==null){unset($data['initial_weight']);}
+        $waybillPriceModel->fill($data);
+        if ($waybillPriceModel->save()){
+            event(new WaybillPriceModelEvent($waybillPriceModel));
+            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            return redirect('waybill/waybillPriceModel')->with('successTip','新计费模型修改成功');
+        }
+    }
+
+    public function destroy($id)
+    {
+        if(!Gate::allows('计费模型-删除')){ return redirect(url('/'));  }
+        $waybillPriceModel=WaybillPriceModel::find($id);
+        $this->log(__METHOD__,__FUNCTION__,json_encode($waybillPriceModel),Auth::user()['id']);
+        $result=$waybillPriceModel->delete();
+        return ['success'=>$result];
+    }
+
+
+    public function import(Request $request){
+        if(!Gate::allows('计费模型-录入')){ return redirect(url('/'));  }
+        $fileSuffix=$request->file('file')->getClientOriginalExtension();
+        if ($fileSuffix=='xlsx'||$fileSuffix=='xlsm'||$fileSuffix=='xltx'||$fileSuffix=='xltm'||$fileSuffix=='xls'||$fileSuffix=='xlt'||$fileSuffix=='ods'||$fileSuffix=='ots'||$fileSuffix=='slk'
+            ||$fileSuffix=='xml'||$fileSuffix=='gnumeric'||$fileSuffix=='htm'||$fileSuffix=='html'||$fileSuffix=='csv'||$fileSuffix=='tsv'){
+            $isOverride = $request->input('isOverride');
+            ini_set('max_execution_time',2100);
+            ini_set('memory_limit','512M');
+            $extension=$request->file()['file']->getClientOriginalExtension();
+            $extension[0] = strtoupper($extension[0]);
+            Excel::import(new WaybillPriceModelsImport($isOverride),$request->file()['file']->path(),null,$extension);
+            if (Cache::has('error')){
+                return '<h1 class="text-danger">导入Excel失败<br><p style="color: red">'.Cache::pull('error').'</p></h1>';
+            }else{
+                $exception=Cache::get('exception');
+                $a='';
+                for ($i=0;$i<count($exception);$i++){$a.=implode(',',$exception[$i]).'&#10'; };
+                return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">'.$a.'</textarea></h1>';
+            }
+        }else{
+            return '<h1 class="text-danger">失败<br><p style="color: red">不支持该文件类型</p></h1>';
+        }
+    }
+
+    protected function validateWaybillPriceModel(Request $request){
+        $min = $request->input('WaybillPriceModel.range_min');
+        $validator= Validator::make($request->input(),[
+            'WaybillPriceModel.province_id'=>'required|integer',
+            'WaybillPriceModel.carrier_id'=>'required|integer',
+            'WaybillPriceModel.unit_id'=>'required|integer',
+            'WaybillPriceModel.city_id'=>'nullable|Integer',
+            'WaybillPriceModel.range_min'=> 'nullable|min:0|numeric',
+            'WaybillPriceModel.range_max'=> "nullable|min:{$min}|numeric",
+            'WaybillPriceModel.unit_price'=>'required|min:0|numeric',
+            'WaybillPriceModel.base_fee'=>'nullable|min:0|numeric',
+            'WaybillPriceModel.initial_weight'=>'nullable|min:0|numeric',
+        ],[
+            'required'=>':attribute 为必填项',
+            'min'     =>':attribute 数值过小',
+            'max'      => ':attribute 数值过大',
+            'numeric' =>':attribute 应为数字',
+            'integer'=> ':attribute 选择错误',
+        ],[
+            'WaybillPriceModel.province_id'=>'省份',
+            'WaybillPriceModel.carrier_id'=>'承运商',
+            'WaybillPriceModel.unit_id'=>'计重单位',
+            'WaybillPriceModel.city_id'=>'城市',
+            'WaybillPriceModel.range_min'=>'价格区间最小值',
+            'WaybillPriceModel.range_max'=>'价格区间最大值',
+            'WaybillPriceModel.unit_price'=>'单价',
+            'WaybillPriceModel.base_fee'=>'起步费',
+            'WaybillPriceModel.initial_weight'=>'始重',
+        ]);
+        return $validator;
+    }
+}

+ 105 - 68
app/Http/Controllers/WaybillsController.php

@@ -2,8 +2,8 @@
 
 namespace App\Http\Controllers;
 
-use App\AuditLog;
-use App\BillingModel;
+use App\WaybillAuditLog;
+use App\WaybillPriceModel;
 use App\Carrier;
 use App\CarType;
 use App\City;
@@ -11,7 +11,8 @@ use App\Exports\WaybillExport;
 use App\Owner;
 use App\Unit;
 use App\Waybill;
-use App\WaybillCalculate;
+use App\WaybillPayoff;
+use App\WaybillFinancialExcepted;
 use App\WaybillFinancialSnapshot;
 use Carbon\Carbon;
 use Illuminate\Http\Request;
@@ -30,9 +31,9 @@ class WaybillsController extends Controller
         $data=$request->input();
         if ($data != null ) {
             $today=Carbon::now()->subDays(15);
-            $waybills=Waybill::with(['owner', 'auditLogs' => function ($query) {
+            $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) {
                 return $query->with('user');
-            }]);
+            }])->orderBy('id','DESC');
             if ($request->input('waybill_number')){
                 $waybills =$waybills->where('waybill_number','like','%'.$request->input('waybill_number').'%')->where('created_at','>',$today->format('Y-m-d'));
             }
@@ -62,7 +63,7 @@ class WaybillsController extends Controller
             $owners = Owner::get();
             return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data]);
         } else {
-            $waybills = Waybill::with(['owner', 'auditLogs' => function ($query) {
+            $waybills = Waybill::with(['owner', 'waybillAuditLogs' => function ($query) {
                 return $query->with('user');
             }])->paginate(50);
             $carries = Carrier::get();
@@ -95,11 +96,12 @@ class WaybillsController extends Controller
             'recipient'=>$data['recipient'],
             'recipient_mobile'=>$data['recipient_mobile'],
             'charge'=>$data['charge'],
+            'collect_fee'=>$data['charge'],
             'ordering_remark'=>$data['ordering_remark']
         ]);
         $waybill->save();
         $number_id=$waybill->id;
-        if ($data['type']=='直发'){
+        if ($data['type']=='直发'){
             $waybill_number='BSZF'.date ("ymd").str_pad($number_id>99999?$number_id%99999:$number_id,4,"0",STR_PAD_LEFT);
             $waybill->waybill_number=$waybill_number;
             $waybill->update();
@@ -129,44 +131,38 @@ class WaybillsController extends Controller
         $this->validatorWaybillDispatch($request)->validate();
         $data=$request->input();
         $waybill=Waybill::find($id);
-
-        if ($waybill->type=="专线"){
-            $carrier_weight=$request->input('carrier_weight');
-            $isBillingModel=BillingModel::whereRaw('carrier_id = ? and city_id = ? and unit_id = ? and range_min < ? and range_max >= ?',[
-                    $request->input('carrier_id'),$request->input('destination_city_id'),
-                    $request->input('warehouse_weight_unit_id'),$carrier_weight,
-                    $carrier_weight
-            ])->first();
-            if ($isBillingModel==null){
-                return redirect()->back()->with('notBillingModel','计费模型未定义')->withInput();
-            }
-        }
         $waybill->fill($data);
         if ($waybill->save()){
-            if ($waybill->type=="直发"){
+            if ($waybill->type=="直发车"){
                 $total_receivable=($waybill->charge);
                 $total_expense=($waybill->fee)+($waybill->other_fee)-($waybill->collect_fee);
             }else if ($waybill->type=="专线"){
-                if ($carrier_weight<$isBillingModel->initial_weight){
-                    $fee=($isBillingModel->unit_price)*($isBillingModel->initial_weight);
-                }else{
-                    $fee=($isBillingModel->unit_price)*$carrier_weight;
+                $waybillPriceModel_id=$request->input('waybillPriceModel');
+                if ($waybillPriceModel_id){
+                    $carrier_weight=$request->input('carrier_weight');
+                    $waybillPriceModel=WaybillPriceModel::find($waybillPriceModel_id);
+                    if ($carrier_weight<$waybillPriceModel->initial_weight){
+                        $fee=($waybillPriceModel->unit_price)*($waybillPriceModel->initial_weight);
+                    }else{
+                        $fee=($waybillPriceModel->unit_price)*$carrier_weight;
+                    }
+                    $waybill->fee=$fee;
+                    $waybill->waybill_price_model_id=$waybillPriceModel_id;
                 }
-                $waybill->fee=$fee;
                 $waybill->save();
                 $total_receivable=($waybill->charge);
                 $total_expense=($waybill->pick_up_fee)+($waybill->other_fee)+($waybill->fee);
             }
-            $waybillCalculate=WaybillCalculate::where('waybill_id','=',$id)->first();
-            if ($waybillCalculate){
-                $waybillCalculate->waybill_id=$id;
-                $waybillCalculate->total_expense=$total_expense;
-                $waybillCalculate->total_receivable=$total_receivable;
-                $waybillCalculate->gross_margin=$total_receivable-$total_expense;
-                $waybillCalculate->gross_profit_rate=(($total_receivable-$total_expense)/$total_receivable);
-                $waybillCalculate->save();
+            $waybillPayoff=WaybillPayoff::where('waybill_id','=',$id)->first();
+            if ($waybillPayoff){
+                $waybillPayoff->waybill_id=$id;
+                $waybillPayoff->total_expense=$total_expense;
+                $waybillPayoff->total_receivable=$total_receivable;
+                $waybillPayoff->gross_margin=$total_receivable-$total_expense;
+                $waybillPayoff->gross_profit_rate=(($total_receivable-$total_expense)/$total_receivable);
+                $waybillPayoff->save();
             }else{
-                WaybillCalculate::create([
+                WaybillPayoff::create([
                     'waybill_id'=>$id,
                     'total_expense'=>$total_expense,
                     'total_receivable'=>$total_receivable,
@@ -179,6 +175,32 @@ class WaybillsController extends Controller
         }
     }
 
+    public function isWaybillPriceModel(Request $request){
+        $carrier_id=$request->input('carrier_id');
+        $destination_city_id=$request->input('destination_city_id');
+        $carrier_weight=$request->input('carrier_weight');
+        $carrier_weight_unit_id=$request->input('carrier_weight_unit_id');
+        if(!$carrier_id)return['success'=>false];
+        if(!$destination_city_id)return['success'=>false];
+        if(!$carrier_weight)return['success'=>false];
+        if(!$carrier_weight_unit_id)return['success'=>false];
+        $waybillPriceModel=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
+            ->where('range_min','<',$carrier_weight)->where('range_max','>=',$carrier_weight)
+            ->where('unit_id',$carrier_weight_unit_id)->first();
+        if($waybillPriceModel)return['success'=>$waybillPriceModel->id];
+        $waybillPriceModelRange=WaybillPriceModel::whereRaw('carrier_id = ? and city_id = ? and unit_id = ? and range_max is null',[$carrier_id,$destination_city_id,$carrier_weight_unit_id])->first();
+        if ($waybillPriceModelRange){ return ['success'=>$waybillPriceModelRange->id];}
+        $city=City::where('id',$destination_city_id)->select('province_id')->first();
+        $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? and province_id = ? and unit_id = ? and range_max >= ? and range_min < ? and city_id is null',
+            [$carrier_id,$city->province_id,$carrier_weight_unit_id,$carrier_weight,$carrier_weight])->first();
+        if ($waybillPriceModelProvince){return ['success'=>$waybillPriceModelProvince->id];}
+        $waybillPriceModelProvinceRange=WaybillPriceModel::whereRaw('carrier_id = ? and province_id = ? and unit_id = ? and range_max is null and city_id is null',
+            [$carrier_id,$city->province_id,$carrier_weight_unit_id])->first();
+        if ($waybillPriceModelProvinceRange){return ['success'=>$waybillPriceModelProvinceRange->id];}else{
+            return ['success'=>false];
+        }
+    }
+
     public function waybillUpdate(Request $request, $id){
         if(!Gate::allows('运单管理-编辑')){ return redirect(url('/'));  }
         $this->validatorWaybill($request)->validate();
@@ -195,21 +217,21 @@ class WaybillsController extends Controller
         if(!Gate::allows('运单管理-运单审核')){ return redirect(url('/'));  }
         $id=$request->input('id');
         $waybill=Waybill::find($id);
-        $isAudit=AuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->first();
+        $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->first();
         if (empty($isAudit)){
-            $auditLog=new AuditLog([
+            $waybillAuditLog=new WaybillAuditLog([
                 'waybill_id'=>$id,
                 'audit_stage'=>'运单阶段',
                 'user_id'=>Auth::id(),
             ]);
-            $auditLog->save();
-            $auditLog['user']=Auth::user();
+            $waybillAuditLog->save();
+            $waybillAuditLog['user']=Auth::user();
             $waybill->state='已审核';
             $result=$waybill->save();
             $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
-            return ['success'=>$result,'state'=>$waybill->state,'auditLog'=>$auditLog];
+            return ['success'=>$result,'state'=>$waybill->state,'waybillAuditLog'=>$waybillAuditLog];
         }
-            return ['exception'=>'请勿重复审核!'];
+        return ['exception'=>'请勿重复审核!'];
     }
 
     public function waybillEdit($id){
@@ -222,7 +244,7 @@ class WaybillsController extends Controller
         if(!Gate::allows('运单管理-调度')){ return redirect(url('/'));  }
         $id=$request->input('id');
         $waybill=Waybill::find($id);
-        AuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->delete();
+        WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->delete();
         $waybill->state='待重审';
         $result=$waybill->save();
         $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
@@ -232,28 +254,37 @@ class WaybillsController extends Controller
         if(!Gate::allows('运单管理-调度审核')){ return redirect(url('/'));  }
         $id=$request->input('id');
         $waybill=Waybill::find($id);
-        $isAudit=AuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"调度阶段"])->first();
+        $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"调度阶段"])->first();
         if (empty($isAudit)){
-            $auditLog=new AuditLog([
+            $waybillAuditLog=new WaybillAuditLog([
                 'waybill_id'=>$id,
                 'audit_stage'=>'调度阶段',
                 'user_id'=>Auth::id(),
             ]);
-            $auditLog->save();
-            $auditLog['user']=Auth::user();
-            $waybillCalculate=WaybillCalculate::where('waybill_id','=',$id)->first();
-            $waybillCalculate->load(["waybill"]);
-            $waybillCalculate->waybill->load(["owner","carrier","origination_city","destination_city","warehouse_weight_unit","carrier_weight_unit","carType","auditLogs"]);
-            $waybillCalculate->waybill->auditLogs->load(["user"]);
-            $waybillCalculateJson=json_encode($waybillCalculate,JSON_UNESCAPED_UNICODE);
-            WaybillFinancialSnapshot::create([
-                'waybill_id'=>$id,
-                'json_content'=>$waybillCalculateJson,
-            ]);
-            $waybill->state='完结';
+            $waybillAuditLog->save();
+            $waybillAuditLog['user']=Auth::user();
+            $waybillPayoff=WaybillPayoff::where('waybill_id','=',$id)->first();
+            $waybillPayoff->load(["waybill"]);
+            $waybillPayoff->waybill->load(["owner","carrier","origination_city","destination_city","warehouse_weight_unit","carrier_weight_unit","carType","waybillAuditLogs"]);
+            $waybillPayoff->waybill->waybillAuditLogs->load(["user"]);
+            $waybillPayoffJson=json_encode($waybillPayoff,JSON_UNESCAPED_UNICODE);
+            if ($waybill->waybill_price_model_id){
+                WaybillFinancialSnapshot::create([
+                    'waybill_id'=>$id,
+                    'json_content'=>$waybillPayoffJson,
+                ]);
+                $waybill->state='完结';
+            }else{
+                WaybillFinancialExcepted::create([
+                    'waybill_id'=>$id,
+                    'json_content'=>$waybillPayoffJson,
+                ]);
+                $waybill->state='未定义计费模型';
+            }
+
             $result=$waybill->save();
-            $this->log(__METHOD__,__FUNCTION__,$waybillCalculateJson,Auth::user()['id']);
-            return ['success'=>$result,'state'=>$waybill->state,'auditLog'=>$auditLog];
+            $this->log(__METHOD__,__FUNCTION__,$waybillPayoffJson,Auth::user()['id']);
+            return ['success'=>$result,'state'=>$waybill->state,'waybillAuditLog'=>$waybillAuditLog];
         }
         return ['exception'=>'请勿重复审核!'];
     }
@@ -291,17 +322,17 @@ class WaybillsController extends Controller
         ]];
         $list=[];
         for ($i=0; $i<count($id);$i++){
-            $waybill=Waybill::with(['owner', 'auditLogs' => function ($query) {
+            $waybill=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) {
                 return $query->with('user');
             }])->find($id[$i]);
-            foreach ($waybill->auditLogs as $auditLog){
-                if ($auditLog->audit_stage=="运单阶段"){
-                    $waybillAuditor=$auditLog->user->name;
+            foreach ($waybill->waybillAuditLogs as $waybillAuditLog){
+                if ($waybillAuditLog->audit_stage=="运单阶段"){
+                    $waybillAuditor=$waybillAuditLog->user->name;
                 }else{
                     $waybillAuditor='';
                 }
-                if ($auditLog->audit_stage=="调度阶段"){
-                    $dispatchAuditor=$auditLog->user->name;
+                if ($waybillAuditLog->audit_stage=="调度阶段"){
+                    $dispatchAuditor=$waybillAuditLog->user->name;
                 }else{
                     $dispatchAuditor='';
                 }
@@ -347,13 +378,14 @@ class WaybillsController extends Controller
             'origination'=>'required|max:255',
             'destination'=>'required|max:255',
             'recipient'=>'required|max:50',
-            'recipient_mobile'=>'required|digits:11|integer',
+            'recipient_mobile'=>['required','regex:/^(0\d{6,10})|(1[3|4|5|7|8][0-9]\d{4,8})$/'],
             'charge'=>'required|min:0|numeric',
+            'collect_fee'=>'nullable|min:0|numeric',
         ],[
             'required'=>':attribute 为必填项',
             'alpha_num'=>':attribute 应为字母或数字',
             'max'=>':attribute 字符过多',
-            'digits'=>':attribute 应为11位',
+            'regex'=>':attribute 输入有误',
             'integer'=>':attribute 应为整数',
             'min'=>':attribute 不得为负',
             'numeric'=>':attribute 应为数字',
@@ -364,16 +396,16 @@ class WaybillsController extends Controller
             'recipient'=>'收件人',
             'recipient_mobile'=>'收件人电话',
             'charge'=>'收费',
+            'collect_fee'=>'到付金额',
         ]);
         return $validator;
     }
     protected function validatorWaybillDispatch(Request $request){
-        if ($request->input('type')=='直发'){
+        if ($request->input('type')=='直发'){
             $validator=Validator::make($request->input(),[
                 'carrier_bill'=>'required|alpha_num|max:50',
                 'fee'=>'required|min:0|numeric',
                 'other_fee'=>'nullable|min:0|numeric',
-                'collect_fee'=>'nullable|min:0|numeric',
             ],[
                 'required'=>':attribute 为必填项',
                 'alpha_num'=>':attribute 应为字母或数字',
@@ -384,7 +416,6 @@ class WaybillsController extends Controller
                 'carrier_bill'=>'承运商单号',
                 'fee'=>'运费',
                 'other_fee'=>'其他费用',
-                'collect_fee'=>'到付金额',
             ]);
             return $validator;
         }else if ($request->input('type')=='专线'){
@@ -394,6 +425,9 @@ class WaybillsController extends Controller
                 'carrier_weight'=>'required|min:0|numeric',
                 'pick_up_fee'=>'required|min:0|numeric',
                 'other_fee'=>'nullable|min:0|numeric',
+                'carrier_id'=>'required|integer',
+                'destination_city_id'=>'required|integer',
+                'carrier_weight_unit_id'=>'required|integer',
             ],[
                 'required'=>':attribute 为必填项',
                 'alpha_num'=>':attribute 应为字母或数字',
@@ -406,6 +440,9 @@ class WaybillsController extends Controller
                 'carrier_weight'=>'承运商计重(抛)',
                 'pick_up_fee'=>'提货费',
                 'other_fee'=>'其他费用',
+                'carrier_id'=>'承运商',
+                'destination_city_id'=>'目的市',
+                'carrier_weight_unit_id'=>'承运商计重单位',
             ]);
             return $validator;
         }else{

+ 166 - 0
app/Imports/WaybillPriceModelsImport.php

@@ -0,0 +1,166 @@
+<?php
+
+namespace App\Imports;
+
+use App\WaybillPriceModel;
+use App\Carrier;
+use App\City;
+use App\Events\WaybillPriceModelEvent;
+use App\Province;
+use App\Unit;
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
+use Maatwebsite\Excel\Concerns\ToCollection;
+use Maatwebsite\Excel\Concerns\WithHeadingRow;
+use Maatwebsite\Excel\Imports\HeadingRowFormatter;
+
+HeadingRowFormatter::default('none');
+class WaybillPriceModelsImport implements ToCollection,WithHeadingRow
+{
+    protected $isOverride;
+    public function __construct($isOverride)
+    {
+        if ($isOverride==1){
+            $this->isOverride=true;
+        }
+    }
+
+
+    /**
+     * @param Collection $collection
+     */
+    public function Collection(Collection $collection)
+    {
+        $endIs=false;
+        $cityIs=true;
+        if (isset($collection->toArray()[0]['承运商'])&&isset($collection->toArray()[0]['计数单位'])&&isset($collection->toArray()[0]['省份'])
+            &&isset($collection->toArray()[0]['单价'])){
+                $endIs=true;
+        }else{
+                Cache::put('error','请检查您第一行标题是否存在承运商,计数单位,省份,单价,市,计数区间,起步费,最低计数',86400);
+                $endIs=false;
+        }
+        $exception=[];
+        $sum=2;
+        if ($endIs) {
+            foreach ($collection as $row) {
+                if ($row['承运商'] && $row['计数单位'] && $row['省份'] && $row['单价']) {
+                    if (strstr($row['省份'], '省')){$row['省份']=str_replace('省','',$row['省份']);};
+                    $carrier = Carrier::where('name', $row['承运商'])->first();
+                    $unit = Unit::where('name', $row['计数单位'])->first();
+                    $province = Province::where('name', $row['省份'])->first();
+                    $city = City::where('name', $row['市'])->first();
+                    if ($carrier && $unit && $province) {
+                        $billing = WaybillPriceModel::where('carrier_id', $carrier->id);
+                        $billing = $billing->where('unit_id', $unit->id);
+                        $billing = $billing->where('province_id', $province->id);
+                        if ($row['市']) {
+                            $billing = $billing->where('city_id', $city->id);
+                        }
+                        if ($row['计数区间'] && !strstr($row['计数区间'], '∞')) {
+                            $str = explode('-', $row['计数区间']);
+                            if (count($str) == 2) {
+                                $billing = $billing->where('range_min', $str[0]);
+                                $billing = $billing->where('range_max', $str[1]);
+                            }
+                        }
+                        $billing = $billing->first();
+                        if (!$billing) {
+                            if (isset($waybillPriceModel['city_id'])){
+                                $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NULL',[$carrier->id,$province->id])->first();
+                                if ($waybillPriceModelProvince){
+                                    $cityIs=false;
+                                    array_push($exception, ['第' . $sum . '行数据已存在省份模型,无需录入城市模型']);
+                                }
+                            }else{
+                                $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NOT NULL',[$carrier->id,$province->id])->first();
+                                if ($waybillPriceModelProvince){
+                                    $cityIs=false;
+                                    array_push($exception, ['第' . $sum . '行数据已存在城市模型,无法录入省份模型']);
+                                }
+                            }
+                            if ($cityIs){
+                                $waybillPriceModel = ['carrier_id' => $carrier->id, 'unit_id' => $unit->id, 'province_id' => $province->id, 'unit_price' => $row['单价']];
+                                if ($row['计数区间']) {
+                                    $str = explode('-', $row['计数区间']);
+                                    if (preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $str[0]) >= 0
+                                        && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $str[1]) > 0
+                                        && $str[0] < $str[1] && count($str) == 2
+                                    ) {
+                                        $waybillPriceModel = array_merge($waybillPriceModel, ['range_min' => $str[0], 'range_max' => $str[1]]);
+                                    } else {
+                                        array_push($exception, ['第' . $sum . '行数据计数区间数据有误,应为:最小值-最大值']);
+                                    }
+                                }
+                                if ($row['市']) {
+                                    if ($city) {
+                                        $waybillPriceModel = array_merge($waybillPriceModel, ['city_id' => $city->id]);
+                                    }
+                                }
+                                if ($row['起步费'] && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $row['起步费']) > 0) {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['base_fee' => $row['起步费']]);
+                                } else {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['base_fee' => 0]);
+                                    array_push($exception, ['第' . $sum . '行数据起步费为空,或为负,已默认设为0']);
+                                }
+                                if ($row['最低计数'] && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $row['最低计数']) > 0) {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['initial_weight' => $row['最低计数']]);
+                                } else {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['initial_weight' => 0]);
+                                    array_push($exception, ['第' . $sum . '行数据最低计数为空,或为负,已默认设为0']);
+                                }
+                                $waybillPriceModel=WaybillPriceModel::create($waybillPriceModel);
+                                event(new WaybillPriceModelEvent($waybillPriceModel));
+                            }
+                        } else {
+                            if ($this->isOverride) {
+                                $waybillPriceModel = ['carrier_id' => $carrier->id, 'unit_id' => $unit->id, 'province_id' => $province->id, 'unit_price' => $row['单价']];
+                                if ($row['计数区间']&& !strstr($row['计数区间'], '∞')) {
+                                    $str = explode('-', $row['计数区间']);
+                                    if (preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $str[0]) > 0
+                                        && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $str[1]) > 0
+                                        && $str[0] < $str[1] && count($str) == 2
+                                    ) {
+                                        $waybillPriceModel = array_merge($waybillPriceModel, ['range_min' => $str[0], 'range_max' => $str[1]]);
+                                    } else {
+                                        array_push($exception, ['第' . $sum . '行数据计数区间数据有误,应为:最小值-最大值']);
+                                    }
+                                }
+                                if ($row['市']) {
+                                    if ($city) {
+                                        $waybillPriceModel = array_merge($waybillPriceModel, ['city_id' => $city->id]);
+                                    }
+                                }
+                                if ($row['起步费'] && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $row['起步费']) > 0) {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['base_fee' => $row['起步费']]);
+                                } else {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['base_fee' => 0]);
+                                    array_push($exception, ['第' . $sum . '行数据起步费为空,或为负,已默认设为0']);
+                                }
+                                if ($row['最低计数'] && preg_match('/^([0-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/', $row['最低计数']) > 0) {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['initial_weight' => $row['最低计数']]);
+                                } else {
+                                    $waybillPriceModel = array_merge($waybillPriceModel, ['initial_weight' => 0]);
+                                    array_push($exception, ['第' . $sum . '行数据最低计数为空,或为负,已默认设为0']);
+                                }
+                                $billing->fill($waybillPriceModel);
+                                if ($billing->save()) {
+                                    event(new WaybillPriceModelEvent($billing));
+                                    array_push($exception, ['第' . $sum . '行数据已覆盖原计费模型']);
+                                }
+                            } else {
+                                array_push($exception, ['第' . $sum . '行数据在计费模型中已存在']);
+                            }
+                        }
+                    } else {
+                        array_push($exception, ['第' . $sum . '行数据承运商,单位,省在基础数据中未定义']);
+                    }
+                } else {
+                    array_push($exception, ['第' . $sum . '行数据必填项为空']);
+                }
+                $sum++;
+            }
+            Cache::put('exception', $exception, 86400);
+        }
+    }
+}

+ 112 - 0
app/Listeners/WaybillPriceModelListener.php

@@ -0,0 +1,112 @@
+<?php
+
+namespace App\Listeners;
+
+use App\City;
+use App\Events\WaybillPriceModelEvent;
+use App\Waybill;
+use App\WaybillPayoff;
+use App\WaybillFinancialExcepted;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Contracts\Queue\ShouldQueue;
+
+class WaybillPriceModelListener
+{
+    /**
+     * Create the event listener.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        //
+    }
+
+    /**
+     * Handle the event.
+     *
+     * @param  WaybillPriceModelEvent  $event
+     * @return void
+     */
+    public function handle(WaybillPriceModelEvent $event)
+    {
+        $waybillPriceModel=$event->waybillPriceModel;
+        $cityIds=[$waybillPriceModel->city_id];
+        //取省下所有市
+        if(!$waybillPriceModel->city_id){
+            $cities=City::select('id')->where('province_id',$waybillPriceModel['province_id'])->get();
+            $cityIds=$cities->map(function ($city){
+                return $city['id'];
+            });
+            //市不存在,价格区间不存在
+            if (!$waybillPriceModel->range_max){
+                $waybills=Waybill::where('carrier_id',$waybillPriceModel->carrier_id)->whereIn('destination_city_id',$cityIds)
+                    ->where('carrier_weight_unit_id',$waybillPriceModel->unit_id)
+                    ->where('type','专线')->where('state','!=','完结')->get();
+            }
+            //市不存在,价格区间存在
+            if ($waybillPriceModel->range_max){
+                $waybills=Waybill::where('carrier_id',$waybillPriceModel->carrier_id)->whereIn('destination_city_id',$cityIds)
+                    ->where('carrier_weight','<=',$waybillPriceModel->range_max)->where('carrier_weight','>',$waybillPriceModel->range_min)
+                    ->where('carrier_weight_unit_id',$waybillPriceModel->unit_id)
+                    ->where('type','专线')->where('state','!=','完结')->get();
+            }
+        }
+
+        //市存在,价格区间存在
+        if ($waybillPriceModel->city_id&&$waybillPriceModel->range_max){
+            $waybills=Waybill::where('carrier_id',$waybillPriceModel->carrier_id)->where('destination_city_id',$waybillPriceModel->city_id)
+                ->where('carrier_weight','<=',$waybillPriceModel->range_max)->where('carrier_weight','>',$waybillPriceModel->range_min)
+                ->where('carrier_weight_unit_id',$waybillPriceModel->unit_id)
+                ->where('type','专线')->where('state','!=','完结')->get();
+        }
+
+        //市存在,价格区间不存在
+        if ($waybillPriceModel->city_id&&!$waybillPriceModel->range_max){
+            $waybills=Waybill::where('carrier_id',$waybillPriceModel->carrier_id)->where('destination_city_id',$waybillPriceModel->city_id)
+                ->where('carrier_weight_unit_id',$waybillPriceModel->unit_id)
+                ->where('type','专线')->where('state','!=','完结')->get();
+        }
+        if ($waybills){
+            foreach ($waybills as $waybill){
+                //修改运单表运费
+                if ($waybill->carrier_weight<$waybillPriceModel->initial_weight){
+                    $fee=($waybillPriceModel->unit_price)*($waybillPriceModel->initial_weight);
+                }else{
+                    $fee=($waybillPriceModel->unit_price)*$waybill->carrier_weight;
+                }
+                $waybill->fee=$fee;
+                $waybill->save();
+                $total_receivable=($waybill->charge);
+                $total_expense=($waybill->pick_up_fee)+($waybill->other_fee)+($waybill->fee);
+
+                //修改财务表信息
+                $waybillPayoff=WaybillPayoff::where('waybill_id','=',$waybill->id)->first();
+                if ($waybillPayoff){
+                    $waybillPayoff->total_expense=$total_expense;
+                    $waybillPayoff->total_receivable=$total_receivable;
+                    $waybillPayoff->gross_margin=$total_receivable-$total_expense;
+                    $waybillPayoff->gross_profit_rate=(($total_receivable-$total_expense)/$total_receivable);
+                    $waybillPayoff->save();
+                }else{
+                    WaybillPayoff::create([
+                        'waybill_id'=>$waybill->id,
+                        'total_expense'=>$total_expense,
+                        'total_receivable'=>$total_receivable,
+                        'gross_margin'=>$total_receivable-$total_expense,
+                        'gross_profit_rate'=>(($total_receivable-$total_expense)/$total_receivable),
+                    ]);
+                };
+                $waybillFinancialExcepted=WaybillFinancialExcepted::where('waybill_id',$waybill->id)->first();
+                if ($waybillFinancialExcepted){
+                    $waybillFinancialExcepted->delete();
+                    $waybill->state='完结';
+                }
+                if ($waybill->waybill_price_model_id!=$waybillPriceModel->id){
+                    $waybill->waybill_price_model_id=$waybillPriceModel->id;
+                }
+                $waybill->save();
+            }
+        }
+    }
+}

+ 3 - 0
app/Providers/EventServiceProvider.php

@@ -21,6 +21,9 @@ class EventServiceProvider extends ServiceProvider
 //        \App\Events\CancelOrder::class => [
 //            \App\Listeners\BroadcastCancelOrder::class,
 //        ],
+        'App\Events\WaybillPriceModelEvent' => [
+            'App\Listeners\WaybillPriceModelListener',
+        ],
     ];
 
     /**

+ 3 - 3
app/Waybill.php

@@ -10,7 +10,7 @@ class Waybill extends Model
     protected $fillable=[
         'state','type','waybill_number','owner_id','wms_bill_number','origination','destination','recipient','recipient_mobile','charge','ordering_remark',
         'carrier_id','carrier_bill','origination_city_id','destination_city_id','warehouse_weight','warehouse_weight_unit_id','carrier_weight','carrier_weight_unit_id','carType_id',
-        'fee','pick_up_fee','other_fee','collect_fee','dispatch_remark'
+        'fee','pick_up_fee','other_fee','collect_fee','dispatch_remark','waybill_price_model_id'
     ];
     protected $appends=[
         'origination_city_name',
@@ -49,8 +49,8 @@ class Waybill extends Model
         return $this->belongsTo('App\CarType','carType_id','id');
     }
 
-    public function auditLogs(){
-        return $this->hasMany('App\AuditLog','waybill_id','id');
+    public function waybillAuditLogs(){
+        return $this->hasMany('App\WaybillAuditLog','waybill_id','id');
     }
 
 

+ 2 - 2
app/AuditLog.php → app/WaybillAuditLog.php

@@ -5,10 +5,10 @@ namespace App;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
-class AuditLog extends Model
+class WaybillAuditLog extends Model
 {
     use SoftDeletes;
-    protected $table='audit_logs';
+    protected $table='waybill_audit_logs';
     protected $fillable=[
         'waybill_id','audit_stage','user_id'
     ];

+ 16 - 0
app/WaybillFinancialExcepted.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class WaybillFinancialExcepted extends Model
+{
+    protected $fillable=[
+        'waybill_id','json_content'
+    ];
+
+    public function waybill(){
+        return $this->belongsTo('App\Waybill','waybill_id','id');
+    }
+}

+ 1 - 1
app/WaybillCalculate.php → app/WaybillPayoff.php

@@ -4,7 +4,7 @@ namespace App;
 
 use Illuminate\Database\Eloquent\Model;
 
-class WaybillCalculate extends Model
+class WaybillPayoff extends Model
 {
 
     protected $fillable=[

+ 2 - 2
app/BillingModel.php → app/WaybillPriceModel.php

@@ -4,11 +4,11 @@ namespace App;
 
 use Illuminate\Database\Eloquent\Model;
 
-class BillingModel extends Model
+class WaybillPriceModel extends Model
 {
 
     protected $fillable=[
-        'carrier_id','province_id','city_id','unit_id','range_min','range_max','unit_price','initial_weight'
+        'carrier_id','province_id','city_id','unit_id','range_min','range_max','unit_price','base_fee','initial_weight'
     ];
 
     protected $appends=[

+ 1 - 1
config/users.php

@@ -3,6 +3,6 @@
 return [
 
 
-    'superAdmin' => ['ldaaww','baoshi56','zhouyaping','shiyao'],
+    'superAdmin' => ['ldaaww','baoshi56','zhouyaping','shiyao','admin'],
 
 ];

+ 3 - 2
database/migrations/2019_11_22_094024_create_waybills_table.php

@@ -17,7 +17,7 @@ class CreateWaybillsTable extends Migration
             $table->bigIncrements('id');
             $table->timestamps();
             $table->string('state',20)->nullable()->comment('类型');
-            $table->enum('type',['直发','专线'])->comment('类型');
+            $table->enum('type',['直发','专线'])->comment('类型');
             $table->string('waybill_number',50)->unique()->index()->comment('运单号');
             $table->bigInteger('owner_id')->index()->comment('货主');
             $table->string('wms_bill_number',50)->unique()->nullable()->comment('WMS单号');
@@ -26,6 +26,7 @@ class CreateWaybillsTable extends Migration
             $table->string('recipient',50)->comment('收件人');
             $table->string('recipient_mobile',50)->comment('收件人电话');
             $table->decimal('charge')->comment('收费(元)');
+            $table->decimal('collect_fee')->nullable()->comment('到付金额');
             $table->text('ordering_remark')->nullable()->comment('下单备注');
             $table->bigInteger('carrier_id')->nullable()->index()->comment('承运商');
             $table->string('carrier_bill')->nullable()->comment('承运商单号');
@@ -39,8 +40,8 @@ class CreateWaybillsTable extends Migration
             $table->decimal('fee')->nullable()->comment('运费');
             $table->decimal('pick_up_fee')->nullable()->comment('提货费');
             $table->decimal('other_fee')->nullable()->comment('其他费用');
-            $table->decimal('collect_fee')->nullable()->comment('到付金额');
             $table->text('dispatch_remark')->nullable()->comment('调度备注');
+            $table->bigInteger('waybill_price_model_id')->nullable()->index()->comment('外联计费模型');
 
             //外键
             /* $table->foreign('owner_id')->references('id')->on('owners');            //货主

+ 3 - 3
database/migrations/2019_11_22_094057_create_waybill_calculates_table.php → database/migrations/2019_11_22_094057_create_waybill_payoffs_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateWaybillCalculatesTable extends Migration
+class CreateWaybillPayoffsTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,7 +13,7 @@ class CreateWaybillCalculatesTable extends Migration
      */
     public function up()
     {
-        Schema::create('waybill_calculates', function (Blueprint $table) {
+        Schema::create('waybill_payoffs', function (Blueprint $table) {
             $table->bigIncrements('id');
             $table->timestamps();
             $table->bigInteger('waybill_id')->unique()->index()->comment('运单ID');
@@ -35,6 +35,6 @@ class CreateWaybillCalculatesTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('waybill_calculates');
+        Schema::dropIfExists('waybill_payoffs');
     }
 }

+ 0 - 4
database/migrations/2019_11_22_094128_create_waybill_financial_snapshots_table.php

@@ -18,10 +18,6 @@ class CreateWaybillFinancialSnapshotsTable extends Migration
             $table->timestamps();
             $table->bigInteger('waybill_id')->unique()->index()->comment('运单ID');
             $table->longText('json_content')->comment('快照json');
-
-            //外键
-            $table->foreign('waybill_id')->references('id')->on('waybills');        //运单
-
         });
     }
 

+ 6 - 0
database/migrations/2019_11_22_094213_create_units_table.php

@@ -18,6 +18,12 @@ class CreateUnitsTable extends Migration
             $table->timestamps();
             $table->string('name',50)->unique()->comment('名称');
         });
+        $units=['kg','m³','T'];
+        for ($i=0;$i<count($units);$i++){
+            \App\Unit::create([
+                'name'=>$units[$i],
+            ]);
+        }
     }
 
     /**

+ 9 - 1
database/migrations/2019_11_22_094241_create_provinces_table.php

@@ -15,9 +15,17 @@ class CreateProvincesTable extends Migration
     {
         Schema::create('provinces', function (Blueprint $table) {
             $table->bigIncrements('id');
-            $table->timestamps();
             $table->string('name',50)->unique()->comment('名称');
+            $table->timestamps();
         });
+        $provinces=['陕西','甘肃','宁夏','青海','新疆','江苏','淅江','安徽','江西','福建','重庆','四川','云南',
+            '贵州','西藏','黑龙江','吉林','辽宁','山东','北京','天津','广西','广东','河北','山西','内蒙古',
+            '湖北','湖南','河南','海南','香港','澳门','台湾','上海'];
+        for ($i=0;$i<count($provinces);$i++){
+            \App\Province::create([
+                'name'=>$provinces[$i]
+            ]);
+        }
     }
 
     /**

+ 306 - 1
database/migrations/2019_11_22_094253_create_cities_table.php

@@ -15,13 +15,318 @@ class CreateCitiesTable extends Migration
     {
         Schema::create('cities', function (Blueprint $table) {
             $table->bigIncrements('id');
-            $table->timestamps();
             $table->bigInteger('province_id')->index()->comment('省份');
             $table->string('name',50)->unique()->comment('名称');
+            $table->timestamps();
 
             //外键
             $table->foreign('province_id')->references('id')->on('provinces');      //省份
         });
+        $Shanxi=['西安','宝鸡','咸阳','铜川','渭南','延安','榆林','汉中','安康','商洛'];
+        $Gansu=['兰州','嘉峪关','金昌','白银','天水','武威','张掖','平凉','酒泉','庆阳','定西','陇南','临夏','合作'];
+        $Ningxia=['银川','石嘴山','吴忠','固原','中卫'];
+        $Qinghai=['西宁','平安县','门源县','同仁县','共和县','玛訫县','玉树县','格尔木'];
+        $Xinjiang=['乌鲁木齐','克拉玛依','吐鲁番','哈密','昌吉州','博乐市','库尔勒','阿克苏市','阿图什市','喀什市','和田市','伊宁市','塔城市','阿尔泰市'];
+        $Jiangsu=['南京','常熟','无锡','徐州','常州','苏州','南通','连云港','淮安','盐城','扬州','镇江','泰州','宿迁'];
+        $ZheJiang=['杭州','宁波','温州','嘉兴','湖州','绍兴','金华','衢州','舟山','台州','丽水'];
+        $Anhui=['合肥','芜湖','蚌埠','淮南','马鞍山','淮北','铜陵','安庆','黄山','滁州','阜阳','宿州','巢湖','六安','亳州','池州','宣城'];
+        $Jiangxi=['南昌','景德镇','萍乡','九江','新余','鹰潭','赣州','吉安','宜春','抚州','上饶'];
+        $Fujian=['福州','厦门','莆田','三明','泉州','漳州','南平','龙岩','宁德'];
+        $Chongqing=['重庆','万州','涪陵','黔江','綦江','潼南','酉阳','巫溪'];
+        $Sichuan=['自贡','攀枝花','泸州','德阳','绵阳','广元','遂宁','内江','乐山','南充','眉山','宜宾','广安','达州','雅安','巴中','资阳','马尔康','西昌','成都'];
+        $Yunnan=['昆明','曲靖','玉溪','保山','昭通','丽江','普洱','临沧','楚雄','蒙自','文山','景洪','大理','芒市','泸水','香格里拉'];
+        $Guizhou=['贵阳','六盘水','遵义','安顺','铜仁','兴义','毕节','凯里','都匀'];
+        $Xizang=['拉萨','昌都','山南','日喀则','那曲','普兰','林芝'];
+        $Heilongjiang=['哈尔滨','齐齐哈尔','鸡西','鹤岗','双鸭山','大庆','伊春','佳木斯','七台河','牡丹江','黑河','绥化','呼玛县'];
+        $Jilin=['长春','吉林','四平','辽源','通化','白山','松原','白城','延吉'];
+        $Liaoning=['沈阳','大连','鞍山','抚顺','本溪','丹东','锦州','营口','阜新','辽阳','盘锦','铁岭','朝阳','葫芦岛'];
+        $Shandong=['青岛','济南','济宁','威海','临清','淄博','德州','莱芜','莱阳','潍坊','高密','文登','济阳','烟台','聊城','兖州','菏泽','东营','日照','临沂'];
+        $Beijing=['北京'];
+        $Tianjin=['天津'];
+        $Guangxi=['柳州','南宁','桂林','梧州','北海','防城港','钦州','贵港','玉林','百色','贺州','河池','来宾','崇左'];
+        $Guangdong=['广州','深圳','韶关','珠海','汕头','佛山','江门','湛江','茂名','肇庆','惠州','梅州','汕头/汕尾','阳江','清远','东莞','中山','潮州','揭阳'];
+        $Hebei=['石家庄','唐山','秦皇岛','邯郸','邢台','保定','张家口','承德','沧州','廊坊','衡水'];
+        $ShanXi=['太原','大同','阳泉','长治','晋城','朔州','晋中','运城','忻州','临汾','吕梁'];
+        $Neimenggu=['呼和浩特','包头','乌海','赤峰','通辽','鄂尔多斯','呼伦贝尔','巴彦淖尔','乌兰察布','乌兰浩特','锡林浩特','阿拉善'];
+        $Hubei=['武汉','黄石','十堰','宜昌','襄樊','鄂州','荆门','孝感','荆州','黄冈','咸宁','随州','恩施'];
+        $Hunan=['长沙','株洲','湘潭','衡阳','邵阳','岳阳','常德','张家界','益阳','郴州','永州','怀化','娄底','吉首'];
+        $Henan=['郑州','开封','洛阳','平顶山','安阳','鹤壁','新乡','焦作','濮阳','许昌','漯河','三门峡','商丘','周口','驻马店','南阳','信阳','济源'];
+        $Hainan=['海口','三亚'];
+        $provinces=['陕西','甘肃','宁夏','青海','新疆','江苏','淅江','安徽','江西','福建','重庆','四川','云南',
+            '贵州','西藏','黑龙江','吉林','辽宁','山东','北京','天津','广西','广东','河北','山西','内蒙古',
+            '湖北','湖南','河南','海南','香港','澳门','台湾','上海'];
+        for ($i=0;$i<count($provinces);$i++){
+            if ($provinces[$i]=="陕西"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Shanxi);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Shanxi[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="甘肃"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Gansu);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Gansu[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="宁夏"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Ningxia);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Ningxia[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="青海"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Qinghai);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Qinghai[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="新疆"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Xinjiang);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Xinjiang[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="江苏"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Jiangsu);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Jiangsu[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="淅江"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($ZheJiang);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$ZheJiang[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="安徽"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Anhui);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Anhui[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="江西"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Jiangxi);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Jiangxi[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="福建"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Fujian);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Fujian[$j],
+                    ]);
+                }
+            }
+           if ($provinces[$i]=="重庆"){
+               $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Chongqing);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Chongqing[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="四川"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Sichuan);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Sichuan[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="云南"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Yunnan);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Yunnan[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="贵州"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Guizhou);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Guizhou[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="西藏"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Xizang);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Xizang[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="黑龙江"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Heilongjiang);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Heilongjiang[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="吉林"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Jilin);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Jilin[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="辽宁"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Liaoning);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Liaoning[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="山东"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Shandong);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Shandong[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="北京"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Beijing);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Beijing[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="天津"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Tianjin);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Tianjin[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="广西"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Guangxi);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Guangxi[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="广东"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Guangdong);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Guangdong[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="河北"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Hebei);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Hebei[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="山西"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($ShanXi);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$ShanXi[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="内蒙古"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Neimenggu);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Neimenggu[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="湖北"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Hubei);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Hubei[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="湖南"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Hunan);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Hunan[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="河南"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Henan);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Henan[$j],
+                    ]);
+                }
+            }
+            if ($provinces[$i]=="海南"){
+                $province=\App\Province::where('name','=',$provinces[$i])->first();
+                for ($j=0;$j<count($Hainan);$j++){
+                    \App\City::create([
+                        'province_id'=>$province->id,
+                        'name'=>$Hainan[$j],
+                    ]);
+                }
+            }
+        }
     }
 
     /**

+ 9 - 8
database/migrations/2019_11_22_094311_create_billing_models_table.php → database/migrations/2019_11_22_094311_create_waybill_price_models_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateBillingModelsTable extends Migration
+class CreateWaybillPriceModelsTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,23 +13,24 @@ class CreateBillingModelsTable extends Migration
      */
     public function up()
     {
-        Schema::create('billing_models', function (Blueprint $table) {
+        Schema::create('waybill_price_models', function (Blueprint $table) {
             $table->bigIncrements('id');
             $table->timestamps();
             $table->bigInteger('carrier_id')->index()->comment('承运商');
             $table->bigInteger('province_id')->index()->comment('省份');
             $table->bigInteger('city_id')->index()->comment('城市');
             $table->bigInteger('unit_id')->index()->comment('货物单位');
-            $table->decimal('range_min')->comment('区间最小值');
-            $table->decimal('range_max')->comment('区间最大值');
+            $table->decimal('range_min')->index()->nullable()->comment('区间最小值');
+            $table->decimal('range_max')->index()->nullable()->comment('区间最大值');
             $table->decimal('unit_price')->comment('单价(元)');
-            $table->decimal('initial_weight')->comment('始重');
+            $table->decimal('base_fee')->default(0)->comment('起步费');
+            $table->decimal('initial_weight')->default(0)->comment('始重');
 
-            //外键
+/*            //外键
             $table->foreign('carrier_id')->references('id')->on('carrier');    //承运商
             $table->foreign('province_id')->references('id')->on('provinces');  //省份
             $table->foreign('city_id')->references('id')->on('citys');         //城市
-            $table->foreign('unit_id')->references('id')->on('units');          //单位
+            $table->foreign('unit_id')->references('id')->on('units');          //单位*/
         });
     }
 
@@ -40,6 +41,6 @@ class CreateBillingModelsTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('billing_models');
+        Schema::dropIfExists('waybill_price_models');
     }
 }

+ 3 - 3
database/migrations/2019_11_28_152321_create_audit_logs_table.php → database/migrations/2019_11_28_152321_create_waybill_audit_logs_table.php

@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;
 
-class CreateAuditLogsTable extends Migration
+class CreateWaybillAuditLogsTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,7 +13,7 @@ class CreateAuditLogsTable extends Migration
      */
     public function up()
     {
-        Schema::create('audit_logs', function (Blueprint $table) {
+        Schema::create('waybill_audit_logs', function (Blueprint $table) {
             $table->bigIncrements('id');
             $table->bigInteger('waybill_id')->comment('外键运单');
             $table->foreign('waybill_id')->references('id')->on('waybills');
@@ -32,6 +32,6 @@ class CreateAuditLogsTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('audit_logs');
+        Schema::dropIfExists('waybillAuditLogs');
     }
 }

+ 1 - 0
database/migrations/2019_12_03_174626_add_data_authorities_waybill.php

@@ -49,6 +49,7 @@ class AddDataAuthoritiesWaybill extends Migration
         (new Authority(['name'=>'运单管理-删除','alias_name'=>'运单管理-删除']))->save();
         (new Authority(['name'=>'运单管理-运单审核','alias_name'=>'运单管理-运单审核']))->save();
         (new Authority(['name'=>'运单管理-调度审核','alias_name'=>'运单管理-调度审核']))->save();
+        (new Authority(['name'=>'运单管理-可见费用项','alias_name'=>'运单管理-调度审核']))->save();
         (new Authority(['name'=>'计量单位','alias_name'=>'计量单位']))->save();
         (new Authority(['name'=>'计量单位-查询','alias_name'=>'计量单位-查询']))->save();
         (new Authority(['name'=>'计量单位-录入','alias_name'=>'计量单位-录入']))->save();

+ 33 - 0
database/migrations/2019_12_17_144623_create_waybill_financial_excepteds_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateWaybillFinancialExceptedsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('waybill_financial_excepteds', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->bigInteger('waybill_id')->index()->comment('外联运单表');
+            $table->longText('json_content')->comment('记录');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('waybill_financial_excepteds');
+    }
+}

+ 2 - 2
database/seeds/BillingModelsSeeder.php

@@ -2,7 +2,7 @@
 
 use Illuminate\Database\Seeder;
 
-class BillingModelsSeeder extends Seeder
+class WaybillPriceModelsSeeder extends Seeder
 {
     /**
      * Run the database seeds.
@@ -11,7 +11,7 @@ class BillingModelsSeeder extends Seeder
      */
     public function run()
     {
-        \App\BillingModel::create([
+        \App\WaybillPriceModel::create([
             'carrier_id'=>1,
             'province_id'=>1,
             'city_id'=>1,

+ 1 - 1
database/seeds/WaybillsCalculatesSeeder.php

@@ -11,7 +11,7 @@ class WaybillsCalculatesSeeder extends Seeder
      */
     public function run()
     {
-        \App\WaybillCalculate::create([
+        \App\WaybillPayoff::create([
             'waybill_id'=>1,
             'total_expense'=>584,
             'total_receivable'=>2015,

+ 1 - 1
database/seeds/WaybillsSeeder.php

@@ -12,7 +12,7 @@ class WaybillsSeeder extends Seeder
     public function run()
     {
         \App\Waybill::create([
-            'type'=>'直发',
+            'type'=>'直发',
             'waybill_number'=>'BSZX1911253086',
             'owner_id'=>1,
             'wms_bill_number'=>'201900202455',

+ 0 - 99
resources/views/waybill/billingModel/index.blade.php

@@ -1,99 +0,0 @@
-
-@extends('layouts.app')
-
-@section('content')
-    <span id="nav2">
-        @component('waybill.menu')@endcomponent
-        @component('waybill.billingModel.menu')@endcomponent
-    </span>
-    <div class="container mt-3">
-        <div class="card">
-            <div class="card-body">
-                @if(Session::has('successTip'))
-                    <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
-                @endif
-                <table class="table table-striped table-sm" id="list">
-                    <tr>
-                        <th>代码</th>
-                        <th>承运商名称</th>
-                        <th>省份</th>
-                        <th>城市</th>
-                        <th>计重单位</th>
-                        <th>区间</th>
-                        <th>单价(元)</th>
-                        <th>始重</th>
-                        <th>录入时间</th>
-                    </tr>
-                    <tr v-for="billingModel in billingModels">
-                        <td class="text-muted">@{{billingModel.id}}</td>
-                        <td>@{{billingModel.carrier}}</td>
-                        <td>@{{billingModel.province}}</td>
-                        <td>@{{billingModel.city}}</td>
-                        <td>@{{billingModel.unit}}</td>
-                        <td>@{{billingModel.range_min}} -- @{{billingModel.range_max}}</td>
-                        <td>@{{billingModel.unit_price}}</td>
-                        <td>@{{billingModel.initial_weight}}</td>
-                        <td class="text-muted">@{{billingModel.created_at}}</td>
-                        <td>
-                            @can('计费模型-编辑')
-                                <button class="btn btn-sm btn-outline-primary" @click="edit(billingModel.id)">改</button> @endcan
-                            @can('计费模型-删除')
-                                <button class="btn btn-sm btn-outline-dark" @click="destroy(billingModel)">删</button> @endcan
-                        </td>
-                    </tr>
-                </table>
-                {{$billingModels->links()}}
-            </div>
-        </div>
-    </div>
-@endsection
-
-@section('lastScript')
-    <script>
-        new Vue({
-            el:"#list",
-            data:{
-                billingModels:[
-                    @foreach( $billingModels as $billingModel )
-                        {id:'{{$billingModel->id}}',carrier:'{{$billingModel->carrier_name}}',
-                        province:'{{$billingModel->province_name}}',city:'{{$billingModel->city_name}}',
-                        unit:'{{$billingModel->unit_name}}',range_min:'{{$billingModel->range_min}}',range_max:'{{$billingModel->range_max}}',
-                        unit_price:'{{$billingModel->unit_price}}',initial_weight:'{{$billingModel->initial_weight}}',
-                        created_at:'{{$billingModel->created_at}}'},
-                    @endforeach
-                ],
-            },
-            methods:{
-                edit:function(id){
-                    location.href = "{{url('billingModel')}}/"+id+"/edit";
-                },
-                destroy:function(billingModel){
-                    if(!confirm('确定要删除该计费模型吗?')){return};
-                    let data=this;
-                    let url = "{{url('billingModel')}}/"+billingModel.id;
-                    axios.delete(url,{id:billingModel.id})
-                        .then(function (response) {
-                            if(response.data.success){
-                                for (let i = 0; i < data.billingModels.length; i++) {
-                                    if (data.billingModels[i].id===billingModel.id){
-                                        data.billingModels.splice(i,1);
-                                        break;
-                                    }
-                                }
-                                tempTip.setDuration(1000);
-                                tempTip.showSuccess('删除计费模型成功!')
-                            }else{
-                                tempTip.setDuration(1000);
-                                tempTip.show('删除计费模型失败!')
-                            }
-                        })
-                        .catch(function (err) {
-                            tempTip.setDuration(3000);
-                            tempTip.show('删除计费模型失败!'+'网络错误:' + err);
-                            console.log(err);
-                        });
-                },
-            }
-        });
-    </script>
-@endsection

+ 0 - 16
resources/views/waybill/billingModel/menu.blade.php

@@ -1,16 +0,0 @@
-
-<div class="container mt-3" id="nav2">
-    <div class="card">
-        <ul class="nav nav-pills">
-            @can('计费模型-查询')
-            <li class="nav-item">
-                <a class="nav-link" href="{{url('billingModel')}}" :class="{active:isActive('',2)}">查询</a>
-            </li> @endcan
-            @can('计费模型-录入')
-            <li class="nav-item">
-                <a class="nav-link" href="{{url('billingModel/create')}}" :class="{active:isActive('create',2)}">录入</a>
-            </li> @endcan
-            {{$slot}}
-        </ul>
-    </div>
-</div>

+ 16 - 6
resources/views/waybill/create.blade.php

@@ -11,17 +11,15 @@
                     @csrf
                     <div class="form-group row">
                         <label for="type" class="col-2 col-form-label text-right text-primary">运单类型 *</label>
-                        <div class="col-8">
-                            <select name="type" style="width: 30%;height: 30px">
-                                    <option value="直发">直发</option>
-                                    <option value="专线">专线</option>
-                            </select>
+                        <div class="col-8" style="padding-top: 1%">
+                            <label class="radio-inline"><input type="radio" name="type" value="直发车" checked>直发车</label>
+                            <label class="radio-inline" style="margin-left: 5%"><input type="radio" name="type" value="专线">专线</label>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="owner_id" class="col-2 col-form-label text-right text-primary">货主 *</label>
                         <div class="col-8">
-                            <select name="owner_id" style="width: 30%;height: 30px">
+                            <select name="owner_id" class="form-control" style="width: 30%;height: 30px">
                                 @foreach($owners as $owner)
                                     <option value="{{$owner->id}}">{{$owner->name}}</option>
                                 @endforeach
@@ -100,6 +98,18 @@
                             @enderror
                         </div>
                     </div>
+                    <div class="form-group row">
+                        <label for="collect_fee" class="col-2 col-form-label text-right text-muted">到付金额(元)</label>
+                        <div class="col-8">
+                            <input type="text" class="form-control @error('collect_fee') is-invalid @enderror"
+                                   name="collect_fee" autocomplete="off" value="{{ old('collect_fee') }}"  >
+                            @error('collect_fee')
+                            <span class="invalid-feedback" role="alert">
+                                <strong>{{ $message }}</strong>
+                            </span>
+                            @enderror
+                        </div>
+                    </div>
                     <div class="form-group row">
                         <label for="ordering_remark" class="col-2 col-form-label text-right text-muted">下单备注</label>
                         <div class="col-8">

+ 156 - 57
resources/views/waybill/edit.blade.php

@@ -8,7 +8,7 @@
             </li>
         @endcomponent
     </div>
-    <div class="container mt-3">
+    <div class="container mt-3" id="list">
         <div class="card">
             <div class="card-body">
                 <form method="POST" action='{{url("waybill/{$waybill->id}")}}'>
@@ -80,18 +80,16 @@
                     <div class="form-group row">
                         <label for="carrier_id" class="col-2 col-form-label text-right text-primary">承运商 *</label>
                         <div class="col-8">
-                            <select name="carrier_id" style="width: 30%;height: 30px">
+                            <select name="carrier_id" class="form-control" id="carrier_id" v-model="waybillPriceModel.carrier_id" style="width: 30%;height: 30px" @change="isCarrier($event)">
                                 @foreach($carriers as $carrier)
-                                    @if($carrier->id==$waybill->carrier_id)
-                                        <option value="{{$carrier->id}}" selected>{{$carrier->name}}</option>
-                                    @else
-                                        <option value="{{$carrier->id}}">{{$carrier->name}}</option>
-                                    @endif
+                                    <option value="{{$carrier->id}}">{{$carrier->name}}</option>
                                 @endforeach
                             </select>
-                            <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">@if(session('notBillingModel')){{session('notBillingModel')}},<a href="{{url('/billingModel/create')}}">点此前去添加</a>@endif</p>
-                            </div>
+                            @error('carrier_id')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
                         </div>
                     </div>
                     <div class="form-group row">
@@ -109,36 +107,31 @@
                     @if($waybill->type=="专线")
                     <div class="form-group row">
                         <label for="origination_city_id" class="col-2 col-form-label text-right text-primary">始发市 *</label>
-                        <div class="col-8">
-                            <select name="origination_city_id" style="width: 30%;height: 30px">
-                                @foreach($cities as $city)
-                                    @if($city->id==$waybill->origination_city_id)
-                                        <option value="{{$city->id}}" selected>{{$city->name}}</option>
-                                    @else
-                                        <option value="{{$city->id}}">{{$city->name}}</option>
-                                    @endif
-                                @endforeach
+                        <div class="col-8 form-inline">
+                            <select class="form-control" name="origination_city_id" style="width: 30%;height: 30px" v-model="waybillPriceModel.origination_city_id">
+                                <option v-for="city in cities" :value="city.id">@{{city.name}}</option>
                             </select>
+                            <input class="form-control-sm" placeholder="输入关键字定位" @input="origination_city_name">
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="destination_city_id" class="col-2 col-form-label text-right text-primary">目的市 *</label>
-                        <div class="col-8">
-                            <select name="destination_city_id" style="width: 30%;height: 30px">
-                                @foreach($cities as $city)
-                                    @if($city->id==$waybill->destination_city_id)
-                                        <option value="{{$city->id}}" selected>{{$city->name}}</option>
-                                    @else
-                                        <option value="{{$city->id}}">{{$city->name}}</option>
-                                    @endif
-                                @endforeach
+                        <div class="col-8 form-inline">
+                            <select class="form-control" name="destination_city_id" id="destination_city_id" v-model="waybillPriceModel.destination_city_id" style="width: 30%;height: 30px" @change="isDestination_city($event)">
+                                <option v-for="city in cities" :value="city.id">@{{city.name}}</option>
                             </select>
+                            <input class="form-control-sm" placeholder="输入关键字定位" @input="destination_city_id">
+                            @error('destination_city_id')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="warehouse_weight" class="col-2 col-form-label text-right text-primary">仓库计重(抛) *</label>
                         <div class="col-8">
-                            <input type="text" class="form-control @error('warehouse_weight') is-invalid @enderror"
+                            <input type="text"  class="form-control @error('warehouse_weight') is-invalid @enderror"
                                    name="warehouse_weight" autocomplete="off" value="@if(old('warehouse_weight')){{ old('warehouse_weight') }}@else{{$waybill->warehouse_weight}}@endif"  >
                             @error('warehouse_weight')
                             <span class="invalid-feedback" role="alert">
@@ -150,7 +143,7 @@
                     <div class="form-group row">
                         <label for="warehouse_weight_unit_id" class="col-2 col-form-label text-right text-primary">仓库计重单位 *</label>
                         <div class="col-8">
-                            <select name="warehouse_weight_unit_id" style="width: 30%;height: 30px">
+                            <select class="form-control" name="warehouse_weight_unit_id" style="width: 30%;height: 30px">
                                 @foreach($units as $unit)
                                     @if($unit->id==$waybill->warehouse_weight_unit_id)
                                         <option value="{{$unit->id}}" selected>{{$unit->name}}</option>
@@ -164,9 +157,9 @@
                     <div class="form-group row">
                         <label for="carrier_weight" class="col-2 col-form-label text-right text-primary">承运商计重(抛) *</label>
                         <div class="col-8">
-                            <input type="text" class="form-control @error('carrier_weight') is-invalid @enderror"
-                                   name="carrier_weight" autocomplete="off" value="@if(old('carrier_weight')){{ old('carrier_weight') }}@else{{$waybill->carrier_weight}}@endif"  >
-                            @error('warehouse_weight')
+                            <input type="text" id="carrier_weight" class="form-control @error('carrier_weight') is-invalid @enderror"
+                                   name="carrier_weight" autocomplete="off" v-model="waybillPriceModel.carrier_weight" @blur="isCarrier_weight($event)">
+                            @error('carrier_weight')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -176,23 +169,24 @@
                     <div class="form-group row">
                         <label for="carrier_weight_unit_id" class="col-2 col-form-label text-right text-primary">承运商计重单位 *</label>
                         <div class="col-8">
-                            <select name="carrier_weight_unit_id" style="width: 30%;height: 30px">
+                            <select class="form-control" name="carrier_weight_unit_id" id="carrier_weight_unit_id" v-model="waybillPriceModel.carrier_weight_unit_id" style="width: 30%;height: 30px" @change="isCarrier_weight_unit($event)">
                                 @foreach($units as $unit)
-                                    @if($unit->id==$waybill->carrier_weight_unit_id)
-                                        <option value="{{$unit->id}}" selected>{{$unit->name}}</option>
-                                    @else
-                                        <option value="{{$unit->id}}" selected>{{$unit->name}}</option>
-                                    @endif
+                                    <option value="{{$unit->id}}">{{$unit->name}}</option>
                                 @endforeach
                             </select>
+                            @error('carrier_weight_unit_id')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
                         </div>
                     </div>
                     @endif
-                    @if($waybill->type=="直发")
+                    @if($waybill->type=="直发")
                     <div class="form-group row">
                         <label for="carType_id" class="col-2 col-form-label text-right text-primary">车型 *</label>
                         <div class="col-8">
-                            <select name="carType_id" style="width: 30%;height: 30px">
+                            <select class="form-control" name="carType_id" style="width: 30%;height: 30px">
                                 @foreach($carTypes as $carType)
                                     @if($carType->id==$waybill->carType_id)
                                         <option value="{{$carType->id}}" selected>{{$carType->name}}({{$carType->length}}米)</option>
@@ -204,7 +198,7 @@
                         </div>
                     </div>
                     @endif
-                    @if($waybill->type=="直发")
+                    @if($waybill->type=="直发")
                     <div class="form-group row">
                         <label for="fee" class="col-2 col-form-label text-right text-primary">运费(元) *</label>
                         <div class="col-8">
@@ -244,20 +238,6 @@
                             @enderror
                         </div>
                     </div>
-                    @if($waybill->type=="直发")
-                    <div class="form-group row">
-                        <label for="collect_fee" class="col-2 col-form-label text-right text-muted">到付金额(元)</label>
-                        <div class="col-8">
-                            <input type="text" class="form-control @error('collect_fee') is-invalid @enderror"
-                                   name="collect_fee" autocomplete="off" value="@if(old('collect_fee')){{ old('collect_fee') }}@else{{$waybill->collect_fee}}@endif"  >
-                            @error('collect_fee')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-                    @endif
                     <div class="form-group row">
                         <label for="dispatch_remark" class="col-2 col-form-label text-right text-muted">调度备注</label>
                         <div class="col-8">
@@ -271,7 +251,7 @@
                         </div>
                     </div>
                     <input type="hidden" name="state" value="待终审">
-
+                    <input type="hidden" name="waybillPriceModel" id="waybillPriceModel">
                     <div class="form-group row">
                         <div class="col-8 offset-2">
                             <input type="submit" class="btn btn-outline-dark form-control">
@@ -282,3 +262,122 @@
         </div>
     </div>
 @endsection
+
+@section('lastScript')
+    <script>
+        let vueList=new Vue({
+            el:'#list',
+            data:{
+                waybillPriceModel: {
+                    carrier_id:'{{$waybill->carrier_id}}',origination_city_id:'{{old('origination_city_id')?old('origination_city_id'):$waybill->origination_city_id}}',
+                    destination_city_id:'{{old('destination_city_id')?old('destination_city_id'):$waybill->destination_city_id}}',
+                    carrier_weight:'{{old('carrier_weight')?old('carrier_weight'):$waybill->carrier_weight}}',carrier_weight_unit_id:'{{$waybill->carrier_weight_unit_id}}'
+                },
+                cities:[
+                    @foreach($cities as $city)
+                        {
+                            id:'{{$city->id}}',name:'{{$city->name}}'
+                        },
+                    @endforeach
+                ],
+            },
+            methods:{
+                isCarrier(e){
+                    let  carrier_id=e.target.value;
+                    let carrier_weight=document.getElementById('carrier_weight').value;
+                    let carrier_weight_unit_id=document.getElementById('carrier_weight_unit_id').value;
+                    let destination_city_id=document.getElementById('destination_city_id').value;
+                    if (carrier_weight&&carrier_weight_unit_id&&destination_city_id) {
+                        axios.post('../is/waybillPriceModel',{carrier_id:carrier_id,carrier_weight:carrier_weight,carrier_weight_unit_id:carrier_weight_unit_id,destination_city_id:destination_city_id})
+                        .then(
+                            function (response) {
+                                if (!response.data.success) {
+                                    tempTip.okWindow('该计费模型不存在,是否仍要录入, @can('计费模型-录入') <a href="{{url('/waybillPriceModel/create')}}">点此前去添加</a> @endcan ');
+                                    document.getElementById('waybillPriceModel').value='';
+                                }else{
+                                    document.getElementById('waybillPriceModel').value=response.data.success;
+                                }
+                            }
+                        );
+                    }
+                },
+                isDestination_city(e){
+                    let  carrier_id=document.getElementById('carrier_id').value;
+                    let carrier_weight=document.getElementById('carrier_weight').value;
+                    let carrier_weight_unit_id=document.getElementById('carrier_weight_unit_id').value;
+                    let destination_city_id=e.target.value;
+                    if (carrier_weight&&carrier_weight_unit_id&&destination_city_id) {
+                        axios.post('../is/waybillPriceModel',{carrier_id:carrier_id,carrier_weight:carrier_weight,carrier_weight_unit_id:carrier_weight_unit_id,destination_city_id:destination_city_id})
+                            .then(
+                                function (response) {
+                                    if (!response.data.success) {
+                                        tempTip.okWindow('该计费模型不存在,是否仍要录入, @can('计费模型-录入') <a href="{{url('/waybillPriceModel/create')}}">点此前去添加</a> @endcan ');
+                                        document.getElementById('waybillPriceModel').value='';
+                                    }else{
+                                        document.getElementById('waybillPriceModel').value=response.data.success;
+                                    }
+                                }
+                            );
+                    }
+                },
+                isCarrier_weight_unit(e){
+                    let  carrier_id=document.getElementById('carrier_id').value;
+                    let carrier_weight=document.getElementById('carrier_weight').value;
+                    let carrier_weight_unit_id=e.target.value;
+                    let destination_city_id=document.getElementById('destination_city_id').value;
+                    if (carrier_weight&&carrier_weight_unit_id&&destination_city_id) {
+                        axios.post('../is/waybillPriceModel',{carrier_id:carrier_id,carrier_weight:carrier_weight,carrier_weight_unit_id:carrier_weight_unit_id,destination_city_id:destination_city_id})
+                            .then(
+                                function (response) {
+                                    if (!response.data.success) {
+                                        tempTip.okWindow('该计费模型不存在,是否仍要录入, @can('计费模型-录入') <a href="{{url('/waybillPriceModel/create')}}">点此前去添加</a> @endcan ');
+                                        document.getElementById('waybillPriceModel').value='';
+                                    }else{
+                                        document.getElementById('waybillPriceModel').value=response.data.success;
+                                    }
+                                }
+                            );
+                    }
+                },
+                isCarrier_weight(e){
+                    let  carrier_id=document.getElementById('carrier_id').value;
+                    let carrier_weight=e.target.value;
+                    let carrier_weight_unit_id=document.getElementById('carrier_weight_unit_id').value;
+                    let destination_city_id=document.getElementById('destination_city_id').value;
+                    if (carrier_weight&&carrier_weight_unit_id&&destination_city_id) {
+                        axios.post('../is/waybillPriceModel',{carrier_id:carrier_id,carrier_weight:carrier_weight,carrier_weight_unit_id:carrier_weight_unit_id,destination_city_id:destination_city_id})
+                            .then(
+                                function (response) {
+                                    if (!response.data.success) {
+                                        tempTip.okWindow('该计费模型不存在,是否仍要录入, @can('计费模型-录入') <a href="{{url('/waybillPriceModel/create')}}">点此前去添加</a> @endcan ');
+                                        document.getElementById('waybillPriceModel').value='';
+                                    }else{
+                                        document.getElementById('waybillPriceModel').value=response.data.success;
+                                    }
+                                }
+                            );
+                    }
+                },
+                origination_city_name:function (e) {
+                    let _this=this;
+                    let $val=e.target.value;
+                    _this.cities.forEach(function (city) {
+                        if (city.name.includes($val)){
+                            _this.waybillPriceModel.origination_city_id=city.id;
+                        }
+                    });
+                },
+
+                destination_city_id:function (e) {
+                    let _this=this;
+                    let $val=e.target.value;
+                    _this.cities.forEach(function (city) {
+                        if (city.name.includes($val)){
+                            _this.waybillPriceModel.destination_city_id=city.id;
+                        }
+                    });
+                },
+            },
+        });
+    </script>
+@endsection

+ 41 - 41
resources/views/waybill/index.blade.php

@@ -3,12 +3,9 @@
 @section('content')
     <div id="nav2">
         @component('waybill.menu')
-            <li class="nav-item">
-                <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('',2)}">查询</a>
-            </li>
         @endcomponent
     </div>
-    <div id="list" class="table-responsive">
+    <div id="list">
         <div class="card">
             <div class="card-body">
                 <form  method="GET" action="{{url('waybill')}}" style="margin-top: 1%" id="optionSubmit">
@@ -21,48 +18,50 @@
                     <tr>
                         <td> <label style="margin-left: 2%">页显示条数:</label>
                             <select name="paginate" v-model="filterData.paginate" @change="setPaginate" class="rounded  " style="height: 30px;width: 80px">
-                                <option value="50">50</option>
-                                <option value="100">100</option>
-                                <option value="200">200</option>
-                                <option value="500">500</option>
-                                <option value="1000">1000</option>
+                                <option value="50">50</option>
+                                <option value="100">100</option>
+                                <option value="200">200</option>
+                                <option value="500">500</option>
+                                <option value="1000">1000</option>
                             </select></td>
-                        <td><label style="margin-left: 2%">承运商:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
-                            <select name="carrier_id" v-model="filterData.carrier_id" class="rounded  " @change="setCarrier" style="height: 30px;width: 80px">
-                                <option >    </option>
-                                @foreach($carriers as $carrier)
-                                    <option value="{{$carrier->id}}">{{$carrier->name}}</option>
-                                @endforeach
+                        <td><label style="margin-left: 2%">类型:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+                            <select name="type" v-model="filterData.type" class="rounded  " @change="setType" style="height: 30px;width: 80px">
+                                <option></option>
+                                <option value="专线">专线</option>
+                                <option value="直发车">直发车车</option>
                             </select></td>
-                        <td><label style="margin-left: 2%">货主:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
+                        <td><label style="margin-left: 2%">货主:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
                             <select name="owner_id" v-model="filterData.owner_id" class="rounded  " @change="setOwner" style="height: 30px;width: 80px">
                                 <option>    </option>
                                 @foreach($owners as $owner)
                                     <option value="{{$owner->id}}">{{$owner->name}}</option>
                                 @endforeach
                             </select></td>
-                        <td><label style="margin-left: 2%">类型:&nbsp;&nbsp;&nbsp;</label>
-                            <select name="type" v-model="filterData.type" class="rounded  " @change="setType" style="height: 30px;width: 80px">
-                                <option></option>
-                                <option value="专线">专线</option>
-                                <option value="直发">直发</option>
+                        <td><label style="margin-left: 2%">承运商:</label>
+                            <select name="carrier_id" v-model="filterData.carrier_id" class="rounded  " @change="setCarrier" style="height: 30px;width: 80px">
+                                <option >    </option>
+                                @foreach($carriers as $carrier)
+                                    <option value="{{$carrier->id}}">{{$carrier->name}}</option>
+                                @endforeach
                             </select></td>
+
                     </tr>
                     <tr>
                         <td><label style="margin-left: 2%">运单号:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
                             <input type="text" name="waybill_number" class="rounded  " v-model="filterData.waybill_number"></td>
                         <td><label style="margin-left: 2%">承运商单号:</label>
                             <input type="text"  name="carrier_bill" class="rounded  " v-model="filterData.carrier_bill"></td>
-                        <td><label style="margin-left: 2%"> WMS单号:</label>
-                            <input type="text" name="wms_bill_number" class="rounded  " v-model="filterData.wms_bill_number"></td>
-                        <td><label style="margin-left: 2%"> 始发地:</label>
+                        <td><label style="margin-left: 2%"> 始发地:&nbsp;&nbsp;&nbsp;&nbsp;</label>
                             <input type="text" name="origination" class="rounded  " v-model="filterData.origination"></td>
+                        <td><label style="margin-left: 2%"> 目的地:</label>
+                            <input type="text"  name="destination" class="rounded  " v-model="filterData.destination"><br></td>
                     </tr>
                     <tr>
-                        <td><label style="margin-left: 2%"> 目的地:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
-                            <input type="text"  name="destination" class="rounded  " v-model="filterData.destination"><br></td>
-                        <td colspan="3"><div><label style="margin-left: 1%"> 开始日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input type="date" name="created_at_start" class="rounded"  v-model="filterData.created_at_start"></div>
-                       <div><label style="margin-left: 1%"> 截至日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input type="date" class="rounded" name="Waybill[created_at_end]" v-model="filterData.created_at_end"></div></td>
+                        <td><label style="margin-left: 2%"> WMS单号:&nbsp;&nbsp;</label>
+                            <input type="text" name="wms_bill_number" class="rounded  " v-model="filterData.wms_bill_number"></td>
+                        <td><div><label style="margin-left: 1%"> 开始日期:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label><input type="date" name="created_at_start" class="rounded"  v-model="filterData.created_at_start"></div></td>
+                        <td colspan="2">
+                            <div><label style="margin-left: 1%"> 截至日期:&nbsp;&nbsp;</label><input type="date" class="rounded" name="created_at_end" v-model="filterData.created_at_end"></div></td>
                     </tr>
                     <tr>
                         <td colspan="5">
@@ -98,6 +97,7 @@
                 <th>收件人</th>
                 <th>收件人电话</th>
                 <th>收费(元)</th>
+                <th>到付金额(元)</th>
                 <th>下单备注</th>
                 <th>运单审核人</th>
                 @can('运单管理-编辑','运单管理-运单审核','运单管理-调度')
@@ -115,7 +115,6 @@
                 <th>运费(元)</th>
                 <th>提货费(元)</th>
                 <th>其他费用(元)</th>
-                <th>到付金额(元)</th>
                 <th>调度备注</th>
                 <th>创建时间</th>
                 <th>调度审核人</th>
@@ -138,8 +137,9 @@
                 <td>@{{waybill.recipient}}</td>
                 <td>@{{waybill.recipient_mobile}}</td>
                 <td>@{{waybill.charge}}</td>
+                <td>@{{waybill.collect_fee}}</td>
                 <td>@{{waybill.ordering_remark}}</td>
-                <td><p v-for="auditLog in waybill.auditLogs" v-if=auditLog.audit_stage==="运单阶段">@{{auditLog.user.name}}</p></td>
+                <td><p v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="运单阶段">@{{waybillAuditLog.user.name}}</p></td>
                 <td>
                     <div v-if=waybill.state==="未审核"||waybill.state==="待重审">
                         @can('运单管理-运单审核')
@@ -151,7 +151,7 @@
                     </div>
                     <div v-if=waybill.state==="已审核">
                         @can('运单管理-调度')
-                            <button class="btn btn-outline-warning" @click="waybillRetreatAudit(waybill.id,waybill.waybill_number)">反审核</button>
+                            <button class="btn btn-outline-secondary" @click="waybillRetreatAudit(waybill.id,waybill.waybill_number)">反审核</button>
                             <button class="btn btn-outline-secondary" @click="job(waybill.id)">调度</button>
                         @endcan
                     </div>                                                                                                                                                                     
@@ -165,13 +165,14 @@
                 <td>@{{waybill.carrier_weight}}</td>
                 <td>@{{waybill.carrier_weight_unit}}</td>
                 <td><p v-if="waybill.carType">@{{ waybill.carType.name }}(@{{waybill.carType.length}}米)</p></td>
-                <td>@{{waybill.fee}}</td>
+                @can('运单管理-可见费用项')
+                    <td><p v-if="waybill.type=='专线'">***</p><p v-else>@{{waybill.fee}}</p></td>
                 <td>@{{waybill.pick_up_fee}}</td>
                 <td>@{{waybill.other_fee}}</td>
-                <td>@{{waybill.collect_fee}}</td>
+                @endcan
                 <td>@{{waybill.dispatch_remark}}</td>
                 <td>@{{waybill.created_at}}</td>
-                <td><p v-for="auditLog in waybill.auditLogs" v-if=auditLog.audit_stage==="调度阶段">@{{auditLog.user.name}}</p></td>
+                <td><p v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="调度阶段">@{{waybillAuditLog.user.name}}</p></td>
 
                 <td>
                     <div v-if=waybill.state==="待终审">
@@ -205,10 +206,10 @@
                         carrier_bill:'{{$waybill->carrier_bill}}',origination_city:'{{$waybill->origination_city_name}}',
                         destination_city:'{{$waybill->destination_city_name}}',warehouse_weight:'{{$waybill->warehouse_weight}}',
                         warehouse_weight_unit:'{{$waybill->warehouse_weight_unit_name}}',carrier_weight:'{{$waybill->carrier_weight}}',
-                        carrier_weight_unit:'{{$waybill->carrier_weight_unit_name}}',@if($waybill->carType)carType:{!! $waybill->carType !!},@endif fee:'{{$waybill->fee}}',
+                        carrier_weight_unit:'{{$waybill->carrier_weight_unit_name}}',@if($waybill->carType)carType:{!! $waybill->carType !!},@endif @can('运单管理-可见费用项') fee:'{{$waybill->fee}}',
                         pick_up_fee:'{{$waybill->pick_up_fee}}',other_fee:'{{$waybill->other_fee}}',
-                        collect_fee:'{{$waybill->collect_fee}}',dispatch_remark:'{{$waybill->dispatch_remark}}',
-                        auditLogs:{!! $waybill->auditLogs !!}
+                        collect_fee:'{{$waybill->collect_fee}}', @endif dispatch_remark:'{{$waybill->dispatch_remark}}',
+                        waybillAuditLogs:{!! $waybill->waybillAuditLogs !!}
                     },
                     @endforeach
                 ],
@@ -227,7 +228,6 @@
                     for(let key in this.filterData){
                         if(this.filterData[key]){
                             if(key==='paginate')continue;
-                            console.log(this.filterData);
                             return true
                         }
                     }
@@ -276,7 +276,7 @@
                                     _this.waybills.forEach(function (waybill) {
                                         if (waybill.id===id){
                                             waybill.state=response.data.state;
-                                            waybill.auditLogs.push(response.data.auditLog);
+                                            waybill.waybillAuditLogs.push(response.data.waybillAuditLog);
                                             w=waybill.waybill_number;
                                         }
                                     });
@@ -309,7 +309,7 @@
                                     _this.waybills.forEach(function (waybill){
                                         if (waybill.id===id){
                                             waybill.state=response.data.state;
-                                            waybill.auditLogs=[];
+                                            waybill.waybillAuditLogs=[];
                                             w=waybill.waybill_number;
                                         }
                                     });
@@ -339,7 +339,7 @@
                                     _this.waybills.forEach(function (s) {
                                         if (s.id===id){
                                             s.state=response.data.state;
-                                            s.auditLogs.push(response.data.auditLog);
+                                            s.waybillAuditLogs.push(response.data.waybillAuditLog);
                                             w=s.waybill_number;
                                         }
                                     });

+ 10 - 3
resources/views/waybill/menu.blade.php

@@ -2,18 +2,25 @@
 <div class="container mt-3" id="nav2">
     <div class="card">
         <ul class="nav nav-pills">
+            @can('运单管理-查询')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('waybill')}}" :class="{active:isActive('',2)}">运单查询</a>
+            </li> @endcan
             @can('运单管理-录入')
             <li class="nav-item">
                 <a class="nav-link" href="{{url('waybill/create')}}" :class="{active:isActive('create',2)}">运单录入</a>
             </li> @endcan
             @can('计费模型')
             <li class="nav-item">
-                <a class="nav-link text-dark" href="{{url('billingModel')}}" :class="{active:isActive('billingModel',1)}">计费模型</a>
+                <a class="nav-link text-dark" href="{{url('waybill/waybillPriceModel')}}" :class="{active:isActive('waybillPriceModel',2)}">计费模型</a>
             </li> @endcan
             @can('财务报表')
             <li class="nav-item">
-                <a class="nav-link text-dark" href="{{url('waybillFinancialSnapshot')}}" :class="{active:isActive('waybillFinancialSnapshot',1)}">财务报表</a>
-            </li> @endcan
+                <a class="nav-link text-dark" href="{{url('waybill/waybillFinancialSnapshot')}}" :class="{active:isActive('waybillFinancialSnapshot',2)}">财务报表</a>
+            </li>
+            <li class="nav-item">
+                <a class="nav-link text-dark" href="{{url('waybill/waybillFinancialExcepted')}}" :class="{active:isActive('waybillFinancialExcepted',2)}">异常报表</a>
+            </li>@endcan
             {{$slot}}
         </ul>
     </div>

+ 24 - 11
resources/views/waybill/waybillEdit.blade.php

@@ -15,22 +15,23 @@
                     @csrf
                     <div class="form-group row">
                         <label for="type" class="col-2 col-form-label text-right text-primary">运单类型 *</label>
-                        <div class="col-8">
-                            <select name="type" style="width: 30%;height: 30px">
-                                @if($waybill->type=="直发")
-                                    <option value="直发" selected>直发</option>
-                                    <option value="专线">专线</option>
-                                @else
-                                    <option value="直发" >直发</option>
-                                    <option value="专线" selected>专线</option>
-                                @endif
-                            </select>
+                            @if($waybill->type=="直发车")
+                                <div class="col-8" style="padding-top: 1%">
+                                    <label class="radio-inline"><input type="radio" name="type" value="直发车" checked>直发车</label>
+                                    <label class="radio-inline" style="margin-left: 5%"><input type="radio" name="type" value="专线">专线</label>
+                                </div>
+                            @else
+                                <div class="col-8" style="padding-top: 1%">
+                                    <label class="radio-inline"><input type="radio" name="type" value="直发车" >直发车</label>
+                                    <label class="radio-inline" style="margin-left: 5%"><input type="radio" name="type" value="专线" checked>专线</label>
+                                </div>
+                            @endif
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="province_id" class="col-2 col-form-label text-right text-primary">货主 *</label>
                         <div class="col-8">
-                            <select name="owner_id" style="width: 30%;height: 30px">
+                            <select name="owner_id" class="form-control" style="width: 30%;height: 30px">
                                 @foreach($owners as $owner)
                                     @if($owner->id==$waybill->owner_id)
                                         <option value="{{$owner->id}}" selected>{{$owner->name}}</option>
@@ -113,6 +114,18 @@
                             @enderror
                         </div>
                     </div>
+                    <div class="form-group row">
+                        <label for="collect_fee" class="col-2 col-form-label text-right text-muted">到付金额(元)</label>
+                        <div class="col-8">
+                            <input type="text" class="form-control @error('collect_fee') is-invalid @enderror"
+                                   name="collect_fee" autocomplete="off" value="@if(old('collect_fee')){{ old('collect_fee') }}@else{{$waybill->collect_fee}}@endif"  >
+                            @error('collect_fee')
+                            <span class="invalid-feedback" role="alert">
+                                <strong>{{ $message }}</strong>
+                            </span>
+                            @enderror
+                        </div>
+                    </div>
                     <div class="form-group row">
                         <label for="ordering_remark" class="col-2 col-form-label text-right text-muted">下单备注</label>
                         <div class="col-8">

+ 56 - 11
resources/views/waybill/waybillFinancialSnapshot/index.blade.php

@@ -1,24 +1,45 @@
 @extends('layouts.app')
 
 @section('content')
-    <div id="nav2">
+<div id="editingPanel">
+    <form  method="get" action="@if(!isset($excepted)) {{url('waybill/waybillFinancialSnapshot')}} @else {{url('waybill/waybillFinancialExcepted')}} @endif ">
+    <div  class="card" id="nav2">
         @component('waybill.menu')@endcomponent
-    </div>
 
+            <div class="container">
+                <div class="card" style="background: #f9f0f0;transform: scale(0.95)">
+                    <div class="btn-group">
+                        <input type="submit" class="btn @if($type=='全部') btn-info @endif" name="type" value="全部"/>
+                        <input type="submit" class="btn @if($type=='直发车') btn-info @endif" name="type" value="直发车"/>
+                        <input type="submit" class="btn @if($type=='专线') btn-info @endif" name="type" value="专线"/>
+                    </div>
+                </div>
+            </div>
+    </div>
+    <div class="card-header">
+        <label style="margin-left: 1%"> 开始日期:</label><input type="date" name="created_at_start" class="rounded"  v-model="filterData.created_at_start">
+        <label style="margin-left: 1%"> 截至日期:</label><input type="date" class="rounded" name="created_at_end" v-model="filterData.created_at_end">
+        <input hidden type="submit" value="kk">
+    </div>
+    </form>
 <!-- 自定义内容区域 -->
-<div class="card table-responsive "  id="editingPanel">
+<div class="card " >
+    @if(!isset($excepted))
     <div class="card-header">
-        <label>操作选定记录:</label>
-        <button @click="waybillExport" class="btn btn-outline-dark">导出Excel</button>
+    <label>操作选定记录:</label>
+    <button @click="waybillExport" class="btn btn-outline-dark">导出Excel</button>
     </div>
+    @endif
     <table class="table  table-hover table-bordered text-nowrap " style="width: 1500px;height: auto">
         <thead>
-        <tr style="background: #E8E8E8">
+        <tr style="background: #E8E8E8;@if(isset($excepted)) color: red; @endif">
+            @if(!isset($excepted))
             <th>
                 <label for="all">
                     <input id="all" type="checkbox" @click="checkAll($event)">全选
                 </label>
             </th>
+            @endif
             <th>运单ID</th>
             <th>运单类型</th>
             <th>运单号</th>
@@ -55,10 +76,12 @@
         </thead>
         <tbody>
 
-        <tr v-for="json_content in json_contents" :style="{background:json_content.waybill.type=='直发'?'#F8F8F8':''}">
+        <tr v-for="json_content in json_contents" :style="{background:json_content.waybill.type=='直发车'?'#F8F8F8':''}">
+            @if(!isset($excepted))
             <td>
                 <input class="checkItem" type="checkbox" :value="json_content.waybill_id" v-model="checkData">
             </td>
+            @endif
             <td>@{{json_content.waybill_id}}</td>
             <td>@{{json_content.waybill.type}}</td>
             <td>@{{json_content.waybill.waybill_number}}</td>
@@ -87,12 +110,12 @@
             <td>@{{json_content.waybill.created_at}}</td>
             <td>
                 <ul style="list-style: none">
-                    <li  v-for="auditLog in json_content.waybill.audit_logs" v-if=auditLog.audit_stage==="运单阶段">@{{auditLog.user.name}}</li>
+                    <li  v-for="waybillAuditLog in json_content.waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="运单阶段">@{{waybillAuditLog.user.name}}</li>
                 </ul>
             </td>
             <td>
                 <ul  style="list-style: none">
-                    <li v-for="auditLog in json_content.waybill.audit_logs" v-if=auditLog.audit_stage==="调度阶段">@{{auditLog.user.name}}</li>
+                    <li v-for="waybillAuditLog in json_content.waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="调度阶段">@{{waybillAuditLog.user.name}}</li>
                 </ul>
             </td>
             <td>@{{json_content.total_receivable}}</td>
@@ -112,6 +135,7 @@
         {{$waybillFinancialSnapshots->render()}}
     </div>
 </div>
+</div>
 @stop
 
 @section('lastScript')
@@ -119,7 +143,7 @@
     let editing= new Vue({
         el:'#editingPanel',
         data:{
-            @if($waybillFinancialSnapshots->isNotEmpty())
+            @if(isset($waybillFinancialSnapshots)&&isset($waybillFinancialSnapshot->json_content))
             json_contents:[
                 @foreach($waybillFinancialSnapshots as $waybillFinancialSnapshot)
                     {!!$waybillFinancialSnapshot->json_content!!},
@@ -127,6 +151,9 @@
             ],
             @endif
             checkData:[],
+            filterData:{
+                created_at_start:'',created_at_end:'',
+            },
         },
         watch:{
             checkData:{
@@ -138,9 +165,27 @@
                     }
                 },
                 deep:true
-            }
+            },
+        },
+        mounted:function(){
+            this.initInputs();
         },
         methods:{
+            initInputs:function(){
+                let data=this;
+                let uriParts =decodeURI(location.href).split("?");
+                if(uriParts.length>1){
+                    let params = uriParts[1].split('&');
+                    params.forEach(function(paramPair){
+                        let pair=paramPair.split('=');
+                        let key = pair[0], val = pair[1];
+                        if(key==='type')return;
+                        console.log(uriParts);
+                        $('input[name="'+key+'"]').val(val);
+                        decodeURI(data.filterData[key]=val);
+                    });
+                }
+            },
             checkAll(e){
                 if (e.target.checked){
                     this.json_contents.forEach((el,i)=>{

+ 60 - 37
resources/views/waybill/billingModel/create.blade.php → resources/views/waybill/waybillPriceModel/create.blade.php

@@ -2,71 +2,75 @@
 
 @section('content')
     <div id="nav2">
-        @component('waybill.billingModel.menu')@endcomponent
+        @component('waybill.menu')@endcomponent
+        @component('waybill.waybillPriceModel.menu')@endcomponent
     </div>
     <div class="container mt-3" id="list">
         <div class="card col-md-8 offset-md-2">
             <div class="card-body">
-                <form method="POST" action="{{ url('billingModel') }}">
+                <form method="POST" action="{{ url('waybill/waybillPriceModel') }}">
+                    @if(Session::has('successTip'))
+                        <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
+                    @endif
                     @csrf
                     <div class="form-group row">
                         <label for="carrier_id" class="col-2 col-form-label text-right">承运商</label>
                         <div class="col-8">
-                            <select name="BillingModel[carrier_id]" style="width: 30%;height: 30px" v-model="inputting.BillingModel.carrier_id">
+                            <select class="form-control" name="WaybillPriceModel[carrier_id]" style="width: 30%;height: 30px" v-model="inputting.WaybillPriceModel.carrier_id">
                                     <option v-for="carrier in carriers" :value="carrier.id">@{{carrier.name}}</option>
                             </select>
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.carrier_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.carrier_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="province_id"  class="col-2 col-form-label text-right">选择省份</label>
                         <div class="col-8" >
-                            <select name="BillingModel[province_id]" style="width: 30%;height: 30px" v-model="inputting.BillingModel.province_id" @change="changeProvince($event)">
+                            <select class="form-control" name="WaybillPriceModel[province_id]" style="width: 30%;height: 30px" v-model="inputting.WaybillPriceModel.province_id" @change="changeProvince($event)">
                                 <option v-for="province in provinces" :value="province.id">@{{province.name}}</option>
                             </select>
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.province_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.province_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="city_id"  class="col-2 col-form-label text-right">选择城市</label>
                         <div class="col-8" >
-                            <select name="BillingModel[city_id]" style="width: 30%;height: 30px" v-model="inputting.BillingModel.city_id">
+                            <select class="form-control" name="WaybillPriceModel[city_id]" style="width: 30%;height: 30px" v-model="inputting.WaybillPriceModel.city_id">
                                 <option v-for="city in cities" :value="city.id">@{{city.name}}</option>
                             </select>
 
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.city_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.city_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="unit_id"  class="col-2 col-form-label text-right">货物单位</label>
                         <div class="col-8" >
-                            <select name="BillingModel[unit_id]" style="width: 30%;height: 30px" v-model="inputting.BillingModel.unit_id">
+                            <select class="form-control" name="WaybillPriceModel[unit_id]" style="width: 30%;height: 30px" v-model="inputting.WaybillPriceModel.unit_id">
                                 <option v-for="unit in units" :value="unit.id">@{{unit.name}}</option>
                             </select>
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.unit_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.unit_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="range_min" class="col-2 col-form-label text-right">价区间</label>
+                        <label for="range_min" class="col-2 col-form-label text-right">价区间</label>
                         <div class="col-8 form-inline">
-                            <input  type="text" style="width: 20%" class="form-control @error('BillingModel.range_min') is-invalid @enderror"
-                                   name="BillingModel[range_min]" autocomplete="off" value="{{ old('BillingModel')['range_min'] }}" >----
-                            <input type="text" style="width: 20%" class="form-control @error('BillingModel.range_max') is-invalid @enderror"
-                                   name="BillingModel[range_max]" autocomplete="off" value="{{ old('BillingModel')['range_max'] }}" >
-                            @error('BillingModel.range_min')
+                            <input  type="text" style="width: 20%" class="form-control @error('WaybillPriceModel.range_min') is-invalid @enderror"
+                                   name="WaybillPriceModel[range_min]" autocomplete="off" value="{{ old('WaybillPriceModel')['range_min'] }}" >&nbsp;&nbsp;--&nbsp;&nbsp;
+                            <input type="text" style="width: 20%" class="form-control @error('WaybillPriceModel.range_max') is-invalid @enderror"
+                                   name="WaybillPriceModel[range_max]" autocomplete="off" value="{{ old('WaybillPriceModel')['range_max'] }}" >
+                            @error('WaybillPriceModel.range_min')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
                             @enderror
-                            @error('BillingModel.range_max')
+                            @error('WaybillPriceModel.range_max')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -76,9 +80,9 @@
                     <div class="form-group row">
                         <label for="unit_price" class="col-2 col-form-label text-right">单价</label>
                         <div class="col-8">
-                            <input type="text" class="form-control @error('BillingModel.unit_price') is-invalid @enderror"
-                                   name="BillingModel[unit_price]" autocomplete="off" value="{{ old('BillingModel')['unit_price'] }}" >
-                            @error('BillingModel.unit_price')
+                            <input type="text" class="form-control @error('WaybillPriceModel.unit_price') is-invalid @enderror"
+                                   name="WaybillPriceModel[unit_price]" autocomplete="off" value="{{ old('WaybillPriceModel')['unit_price'] }}" >
+                            @error('WaybillPriceModel.unit_price')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -86,11 +90,23 @@
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="initial_weight" class="col-2 col-form-label text-right">始重</label>
+                        <label for="base_fee" class="col-2 col-form-label text-right">起步费(元)</label>
                         <div class="col-8">
-                            <input type="text" class="form-control @error('BillingModel.initial_weight') is-invalid @enderror"
-                                   name="BillingModel[initial_weight]" autocomplete="off" value="{{ old('BillingModel')['initial_weight'] }}" >
-                            @error('BillingModel.initial_weight')
+                            <input type="text" class="form-control @error('WaybillPriceModel.base_fee') is-invalid @enderror"
+                                   name="WaybillPriceModel[base_fee]" autocomplete="off" value="{{ old('WaybillPriceModel')['base_fee'] }}" >
+                            @error('WaybillPriceModel.base_fee')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="initial_weight" class="col-2 col-form-label text-right">最低计数</label>
+                        <div class="col-8">
+                            <input type="text" class="form-control @error('WaybillPriceModel.initial_weight') is-invalid @enderror"
+                                   name="WaybillPriceModel[initial_weight]" autocomplete="off" value="{{ old('WaybillPriceModel')['initial_weight'] }}" >
+                            @error('WaybillPriceModel.initial_weight')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -114,24 +130,24 @@
             el:'#list',
             data:{
                 inputting:{
-                    BillingModel:{
-                        @if(isset(old('BillingModel')['province_id']))
-                        province_id:'{{old('BillingModel')['province_id']}}',
+                    WaybillPriceModel:{
+                        @if(isset(old('WaybillPriceModel')['province_id']))
+                        province_id:'{{old('WaybillPriceModel')['province_id']}}',
                         @endif
-                        @if(isset(old('BillingModel')['city_id']))
-                        city_id:'{{old('BillingModel')['city_id']}}',
+                        @if(isset(old('WaybillPriceModel')['city_id']))
+                        city_id:'{{old('WaybillPriceModel')['city_id']}}',
                         @endif
-                        @if(isset(old('BillingModel')['carrier_id']))
-                        carrier_id:'{{old('BillingModel')['carrier_id']}}',
+                        @if(isset(old('WaybillPriceModel')['carrier_id']))
+                        carrier_id:'{{old('WaybillPriceModel')['carrier_id']}}',
                         @endif
-                        @if(isset(old('BillingModel')['unit_id']))
-                        unit_id:'{{old('BillingModel')['unit_id']}}',
+                        @if(isset(old('WaybillPriceModel')['unit_id']))
+                        unit_id:'{{old('WaybillPriceModel')['unit_id']}}',
                         @endif
                     }
                 },
                 provinces:[
                     @foreach($provinces as $province)
-                        {id:'{{$province->id}}',name:'{{$province->name}}',cities:{!! $province->cities !!} },
+                        {id:'{{$province->id}}',name:'{{$province->name}}' },
                     @endforeach
                 ],
                 cities:[
@@ -148,16 +164,23 @@
                 ],
             },
            methods:{
-               changeProvince(){
+               changeProvince(e){
                    let _this=this;
-                   let province_id=this.inputting.BillingModel.province_id;
+                   let val=e.target.value;
+                   axios.get('cities/'+val).then(
+                        function (response) {
+                            _this.cities=response.data.cities;
+                        }
+                   );
+                   /*let _this=this;
+                   let province_id=this.inputting.WaybillPriceModel.province_id;
                    this.provinces.forEach(function (province) {
                        if(province.id+''===province_id+''){
                            _this.cities=province.cities;
                            return
                        }
                        return null
-                   })
+                   })*/
                }
            },
         });

+ 65 - 42
resources/views/waybill/billingModel/edit.blade.php → resources/views/waybill/waybillPriceModel/edit.blade.php

@@ -2,7 +2,7 @@
 
 @section('content')
     <div id="nav2">
-        @component('waybill.billingModel.menu')
+        @component('waybill.waybillPriceModel.menu')
                 <li class="nav-item">
                     <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('edit',4)}">修改</a>
                 </li>
@@ -11,70 +11,70 @@
     <div class="container mt-3" id="list">
         <div class="card">
             <div class="card-body">
-                <form method="POST" action='{{url("billingModel/{$billingModel->id}")}}'>
+                <form method="POST" action='{{url("waybill/waybillPriceModel/{$waybillPriceModel->id}")}}'>
                     @csrf
                     @method('PUT')
                     <div class="form-group row">
                         <label for="carrier_id" class="col-2 col-form-label text-right">承运商</label>
                         <div class="col-8">
-                            <select name="BillingModel[carrier_id]" v-model="inputting.BillingModel.carrier_id" style="width: 30%;height: 30px">
+                            <select name="WaybillPriceModel[carrier_id]" v-model="inputting.WaybillPriceModel.carrier_id" style="width: 30%;height: 30px">
                                 <option v-for="carrier in carriers" :value="carrier.id">@{{carrier.name}}</option>
                             </select>
 
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.carrier_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.carrier_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="province_id"  class="col-2 col-form-label text-right">选择省份</label>
                         <div class="col-8" >
-                            <select name="BillingModel[province_id]" v-model="inputting.BillingModel.province_id" @change="changeProvince($event)" style="width: 30%;height: 30px">
+                            <select name="WaybillPriceModel[province_id]" v-model="inputting.WaybillPriceModel.province_id" @change="changeProvince($event)" style="width: 30%;height: 30px">
                                 <option v-for="province in provinces" :value="province.id">@{{province.name}}</option>
                             </select>
 
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.province_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.province_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="city_id"  class="col-2 col-form-label text-right">选择城市</label>
                         <div class="col-8" >
-                            <select name="BillingModel[city_id]" v-model="inputting.BillingModel.city_id" style="width: 30%;height: 30px">
+                            <select name="WaybillPriceModel[city_id]" v-model="inputting.WaybillPriceModel.city_id" style="width: 30%;height: 30px">
                                 <option v-for="city in cities" :value="city.id">@{{city.name}}</option>
                             </select>
 
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.city_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.city_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="unit_id"  class="col-2 col-form-label text-right">货物单位</label>
                         <div class="col-8" >
-                            <select name="BillingModel[unit_id]" style="width: 30%;height: 30px">
-                                <option v-for="unit in units" :value="unit.id" v-model="inputting.BillingModel.unit_id">@{{unit.name}}</option>
+                            <select name="WaybillPriceModel[unit_id]" v-model="inputting.WaybillPriceModel.unit_id" style="width: 30%;height: 30px">
+                                <option v-for="unit in units" :value="unit.id" >@{{unit.name}}</option>
                             </select>
 
                             <div class="col-sm-5">
-                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('BillingModel.unit_id') }}</p>
+                                <p class="form-control-static text-danger small font-weight-bold">{{ $errors->first('WaybillPriceModel.unit_id') }}</p>
                             </div>
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="range_min" class="col-2 col-form-label text-right">价区间</label>
+                        <label for="range_min" class="col-2 col-form-label text-right">价区间</label>
                         <div class="col-8 form-inline">
-                            <input type="text" style="width: 20%" class="form-control @error('BillingModel.range_min') is-invalid @enderror"
-                                   name="BillingModel[range_min]" autocomplete="off" value="{{old('BillingModel')['range_min']?old('BillingModel')['range_min']:$billingModel->range_min}}" >---
-                            <input type="text"  style="width: 20%" class="form-control @error('BillingModel.range_max') is-invalid @enderror"
-                                   name="BillingModel[range_max]" autocomplete="off" value="{{old('BillingModel')['range_max']?old('BillingModel')['range_max']:$billingModel->range_max}}" >
-                            @error('BillingModel.range_min')
+                            <input type="text" style="width: 20%" class="form-control @error('WaybillPriceModel.range_min') is-invalid @enderror"
+                                   name="WaybillPriceModel[range_min]" autocomplete="off" value="{{old('WaybillPriceModel')['range_min']?old('WaybillPriceModel')['range_min']:$waybillPriceModel->range_min}}" >&nbsp;&nbsp;--&nbsp;&nbsp;
+                            <input type="text"  style="width: 20%" class="form-control @error('WaybillPriceModel.range_max') is-invalid @enderror"
+                                   name="WaybillPriceModel[range_max]" autocomplete="off" value="{{old('WaybillPriceModel')['range_max']?old('WaybillPriceModel')['range_max']:$waybillPriceModel->range_max}}" >
+                            @error('WaybillPriceModel.range_min')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
                             @enderror
-                            @error('BillingModel.range_max')
+                            @error('WaybillPriceModel.range_max')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -84,9 +84,9 @@
                     <div class="form-group row">
                         <label for="unit_price" class="col-2 col-form-label text-right">单价</label>
                         <div class="col-8">
-                            <input type="text"  class="form-control @error('BillingModel.unit_price') is-invalid @enderror"
-                                   name="BillingModel[unit_price]" autocomplete="off" value="{{old('BillingModel')['unit_price']?old('BillingModel')['unit_price']:$billingModel->unit_price}}" >
-                            @error('BillingModel.unit_price')
+                            <input type="text"  class="form-control @error('WaybillPriceModel.unit_price') is-invalid @enderror"
+                                   name="WaybillPriceModel[unit_price]" autocomplete="off" value="{{old('WaybillPriceModel')['unit_price']?old('WaybillPriceModel')['unit_price']:$waybillPriceModel->unit_price}}" >
+                            @error('WaybillPriceModel.unit_price')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -94,11 +94,23 @@
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="initial_weight" class="col-2 col-form-label text-right">始重</label>
+                        <label for="base_fee" class="col-2 col-form-label text-right">起步费(元)</label>
                         <div class="col-8">
-                            <input type="text" class="form-control @error('BillingModel.initial_weight') is-invalid @enderror"
-                                   name="BillingModel[initial_weight]" autocomplete="off" value="{{old('BillingModel')['initial_weight']?old('BillingModel')['initial_weight']:$billingModel->initial_weight}}" >
-                            @error('BillingModel.initial_weight')
+                            <input type="text" class="form-control @error('WaybillPriceModel.base_fee') is-invalid @enderror"
+                                   name="WaybillPriceModel[base_fee]" autocomplete="off" value="{{old('WaybillPriceModel')['base_fee']?old('WaybillPriceModel')['base_fee']:$waybillPriceModel->base_fee}}" >
+                            @error('WaybillPriceModel.base_fee')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="initial_weight" class="col-2 col-form-label text-right">最低计数</label>
+                        <div class="col-8">
+                            <input type="text" class="form-control @error('WaybillPriceModel.initial_weight') is-invalid @enderror"
+                                   name="WaybillPriceModel[initial_weight]" autocomplete="off" value="{{old('WaybillPriceModel')['initial_weight']?old('WaybillPriceModel')['initial_weight']:$waybillPriceModel->initial_weight}}" >
+                            @error('WaybillPriceModel.initial_weight')
                             <span class="invalid-feedback" role="alert">
                                         <strong>{{ $message }}</strong>
                                     </span>
@@ -122,19 +134,22 @@
             el:'#list',
             data:{
                 inputting:{
-                    BillingModel:{
-                        carrier_id:'{{old('BillingModel')['carrier_id']?old('BillingModel')['carrier_id']:$billingModel->carrier_id}}',
-                        province_id:'{{old('BillingModel')['province_id']?old('BillingModel')['province_id']:$billingModel->province_id}}',
-                        city_id:'{{old('BillingModel')['city_id']?old('BillingModel')['city_id']:$billingModel->city_id}}',
-                        unit_id:'{{old('BillingModel')['unit_id']?old('BillingModel')['unit_id']:$billingModel->unit_id}}',
+                    WaybillPriceModel:{
+                        carrier_id:'{{old('WaybillPriceModel')['carrier_id']?old('WaybillPriceModel')['carrier_id']:$waybillPriceModel->carrier_id}}',
+                        province_id:'{{old('WaybillPriceModel')['province_id']?old('WaybillPriceModel')['province_id']:$waybillPriceModel->province_id}}',
+                        city_id:'{{old('WaybillPriceModel')['city_id']?old('WaybillPriceModel')['city_id']:$waybillPriceModel->city_id}}',
+                        unit_id:'{{old('WaybillPriceModel')['unit_id']?old('WaybillPriceModel')['unit_id']:$waybillPriceModel->unit_id}}',
                     }
                 },
                 provinces:[
                     @foreach($provinces as $province)
-                    {id:'{{$province->id}}',name:'{{$province->name}}',cities:{!! $province->cities !!} },
+                    {id:'{{$province->id}}',name:'{{$province->name}}' },
                     @endforeach
                 ],
                 cities:[
+                    @foreach($cities as $city)
+                    {id:'{{$city->id}}',name:'{{$city->name}}'},
+                    @endforeach
                 ],
                 carriers:[
                      @foreach($carriers as $carrier)
@@ -146,21 +161,30 @@
                     {id:'{{$unit->id}}',name:'{{$unit->name}}'},
                     @endforeach
                 ],
-                billingModel:[
-                        {id:'{{$billingModel->id}}',created_at:'{{$billingModel->created_at}}',
-                        carrier_id:'{{$billingModel->carrier_id}}',province_id:'{{$billingModel->province_id}}',
-                        city_id:'{{$billingModel->city_id}}',unit_id:'{{$billingModel->unit_id}}',
-                        section:'{{$billingModel->section}}',unit_price:'{{$billingModel->unit_price}}',initial_weight:'{{$billingModel->initial_weight}}'},
+                waybillPriceModel:[
+                        {id:'{{$waybillPriceModel->id}}',created_at:'{{$waybillPriceModel->created_at}}',
+                        carrier_id:'{{$waybillPriceModel->carrier_id}}',province_id:'{{$waybillPriceModel->province_id}}',
+                        city_id:'{{$waybillPriceModel->city_id}}',unit_id:'{{$waybillPriceModel->unit_id}}',
+                        section:'{{$waybillPriceModel->section}}',unit_price:'{{$waybillPriceModel->unit_price}}',initial_weight:'{{$waybillPriceModel->initial_weight}}'},
                 ]
             },
             mounted:function(){
-                this.changeProvince();
-                this.inputting.BillingModel.city_id='{{$billingModel->city_id}}';
+                this.inputting.WaybillPriceModel.city_id='{{$waybillPriceModel->city_id}}';
             },
             methods:{
-                changeProvince(){
+                changeProvince(e){
                     let _this=this;
-                    let province_id=this.inputting.BillingModel.province_id;
+                    let val=e.target.value;
+                    axios.get('../cities/'+val).then(
+                        function (response) {
+                            _this.cities=response.data.cities;
+                        }
+                    );
+                }
+            },
+/*                changeProvince(){
+                    let _this=this;
+                    let province_id=this.inputting.WaybillPriceModel.province_id;
                     this.provinces.forEach(function (province) {
                         if(province.id+''===province_id+''){
                             _this.cities=province.cities;
@@ -168,8 +192,7 @@
                         }
                         return null
                     })
-                }
-            },
+                }*/
         });
 
     </script>

+ 57 - 0
resources/views/waybill/waybillPriceModel/import.blade.php

@@ -0,0 +1,57 @@
+@extends('layouts.app')
+
+@section('content')
+    <div id="nav2">
+        @component('waybill.menu')@endcomponent
+        @component('waybill.waybillPriceModel.menu')@endcomponent
+    </div>
+    <div class="container mt-3">
+        <div class="card col-md-8 offset-md-2">
+            <div class="card-body">
+                <form method="POST" action="{{ url('waybillPriceModel/excel/import') }}" enctype="multipart/form-data" target="_blank">
+                    @csrf
+                    <div class="form-group row text-center">
+                        <div class="col-12 text-danger">
+
+                            注意:请保证表第一行有以下对应的字段名<br>(可不按顺序,承运商,计数单位,省份,单价为必填项,其余字段不填或填入错误数据则导入默认值0):<br>
+                            承运商,计数单位,计数区间,省份,单价,市,起步费,最低计数<br>
+                        </div>
+                        <div class="col-12 text-info ">
+                            导入时间随文件大小可能达数十分钟以上,请耐心等候
+                            <hr>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="sku" class="col-2 col-form-label text-right">选择EXCEL</label>
+                        <div class="col-8">
+                            <div class="form-control">
+                                <input type="file" class="form-control-file @error('file') is-invalid @enderror"
+                                       name="file" value="{{ old('file') }}" required>
+                                @error('file')
+                                <span class="invalid-feedback" role="alert">
+                                <strong>{{ $message }}</strong>
+                            </span>
+                                @enderror
+                            </div>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="sku" class="col-2 col-form-label text-right">是否覆盖</label>
+                        <div class="col-8">
+                            <select name="isOverride" id="isOverride" class="form-control" >
+                                <option value="0">仅新增</option>
+                                <option value="1">新增且覆盖</option>
+                            </select>
+                            <p class="text-muted">覆盖会以承运商,计数单位,计数区间,省份为依据,覆盖其余字段</p>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <div class="col-8 offset-2">
+                            <input type="submit" class="btn btn-success form-control" value="执行导入">
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+@endsection

+ 167 - 0
resources/views/waybill/waybillPriceModel/index.blade.php

@@ -0,0 +1,167 @@
+
+@extends('layouts.app')
+
+@section('content')
+    <span id="nav2">
+        @component('waybill.menu')@endcomponent
+        @component('waybill.waybillPriceModel.menu')@endcomponent
+    </span>
+    <div id="list">
+    <div class="container mt-3">
+        <div class="card">
+            <div>
+                <form  method="GET" action="{{url('waybill/waybillPriceModel')}}" style="margin-top: 1%" id="optionSubmit">
+                    <table class="table  table-sm table-bordered table-hover text-nowrap ">
+                        <tr>
+                            <td  > <label style="margin-left: 2%" class="form-inline">页显示条数:
+                                <select name="paginate" v-model="filterData.paginate" class="form-control" @change="setPaginate" style="height: 30px;width: 80px">
+                                    <option value="50">50行</option>
+                                    <option value="100">100行</option>
+                                    <option value="200">200行</option>
+                                    <option value="500">500行</option>
+                                    <option value="1000">1000行</option>
+                                </select></label></td>
+                            <td > <label class="form-inline" style="margin-left: 2%">承运商:
+                                <select name="carrier_id" v-model="filterData.carrier_id" class="form-control"  @change="setCarrier" style="height: 30px;width: 80px">
+                                    <option >    </option>
+                                    @foreach($carriers as $carrier)
+                                        <option value="{{$carrier->id}}">{{$carrier->name}}</option>
+                                    @endforeach
+                                </select></label></td>
+                            <td><label class="form-inline" style="margin-left: 2%">省份:
+                                <select name="province_id" v-model="filterData.province_id" class="form-control" @change="setProvince" style="height: 30px;width: 80px">
+                                    <option>    </option>
+                                    @foreach($provinces as $province)
+                                        <option value="{{$province->id}}">{{$province->name}}</option>
+                                    @endforeach
+                                </select><input hidden type="submit" value="kk"></label></td>
+                        </tr>
+                    </table>
+                </form>
+            </div>
+            <div class="card-body">
+                @if(Session::has('successTip'))
+                    <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
+                @endif
+                <table class="table table-striped table-sm">
+                    <tr>
+                        <th>代码</th>
+                        <th>承运商名称</th>
+                        <th>省份</th>
+                        <th>城市</th>
+                        <th>计重单位</th>
+                        <th>区间</th>
+                        <th>单价(元)</th>
+                        <th>起步费(元)</th>
+                        <th>最低计数</th>
+                        <th>录入时间</th>
+                    </tr>
+                    <tr v-for="waybillPriceModel in waybillPriceModels">
+                        <td class="text-muted">@{{waybillPriceModel.id}}</td>
+                        <td>@{{waybillPriceModel.carrier}}</td>
+                        <td>@{{waybillPriceModel.province}}</td>
+                        <td>@{{waybillPriceModel.city}}</td>
+                        <td>@{{waybillPriceModel.unit}}</td>
+                        <td>@{{waybillPriceModel.range_min}}<a v-if="waybillPriceModel.range_min&&waybillPriceModel.range_max">&nbsp;&nbsp;--&nbsp;&nbsp;</a> @{{waybillPriceModel.range_max}}</td>
+                        <td>@{{waybillPriceModel.unit_price}}</td>
+                        <td>@{{waybillPriceModel.base_fee}}</td>
+                        <td>@{{waybillPriceModel.initial_weight}}</td>
+                        <td class="text-muted">@{{waybillPriceModel.created_at}}</td>
+                        <td>
+                            @can('计费模型-编辑')
+                                <button class="btn btn-sm btn-outline-primary" @click="edit(waybillPriceModel.id)">改</button> @endcan
+                            @can('计费模型-删除')
+                                <button class="btn btn-sm btn-outline-dark" @click="destroy(waybillPriceModel)">删</button> @endcan
+                        </td>
+                    </tr>
+                </table>
+                {{$waybillPriceModels->appends($filterData)->links()}}
+            </div>
+        </div>
+    </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script>
+        new Vue({
+            el:"#list",
+            data:{
+                waybillPriceModels:[
+                    @foreach( $waybillPriceModels as $waybillPriceModel )
+                        {id:'{{$waybillPriceModel->id}}',carrier:'{{$waybillPriceModel->carrier_name}}',
+                        province:'{{$waybillPriceModel->province_name}}',city:'{{$waybillPriceModel->city_name}}',
+                        unit:'{{$waybillPriceModel->unit_name}}',range_min:'{{$waybillPriceModel->range_min}}',range_max:'{{$waybillPriceModel->range_max}}',
+                        unit_price:'{{$waybillPriceModel->unit_price}}',base_fee:'{{$waybillPriceModel->base_fee}}',initial_weight:'{{$waybillPriceModel->initial_weight}}',
+                        created_at:'{{$waybillPriceModel->created_at}}'},
+                    @endforeach
+                ],
+                filterData:
+                    {paginate:'50',carrier_id:'',province_id: ''},
+            },
+            mounted:function(){
+                this.initInputs();
+            },
+            methods:{
+                edit:function(id){
+                    location.href = "{{url('waybill/waybillPriceModel')}}/"+id+"/edit";
+                },
+                destroy:function(waybillPriceModel){
+                    if(!confirm('确定要删除该计费模型吗?')){return};
+                    let data=this;
+                    let url = "{{url('waybill/waybillPriceModel')}}/"+waybillPriceModel.id;
+                    axios.delete(url,{id:waybillPriceModel.id})
+                        .then(function (response) {
+                            if(response.data.success){
+                                for (let i = 0; i < data.waybillPriceModels.length; i++) {
+                                    if (data.waybillPriceModels[i].id===waybillPriceModel.id){
+                                        data.waybillPriceModels.splice(i,1);
+                                        break;
+                                    }
+                                }
+                                tempTip.setDuration(1000);
+                                tempTip.showSuccess('删除计费模型成功!')
+                            }else{
+                                tempTip.setDuration(1000);
+                                tempTip.show('删除计费模型失败!')
+                            }
+                        })
+                        .catch(function (err) {
+                            tempTip.setDuration(3000);
+                            tempTip.show('删除计费模型失败!'+'网络错误:' + err);
+                            console.log(err);
+                        });
+                },
+                initInputs:function(){
+                    let data=this;
+                    let uriParts =decodeURI(location.href).split("?");
+                    if(uriParts.length>1){
+                        let params = uriParts[1].split('&');
+                        params.forEach(function(paramPair){
+                            let pair=paramPair.split('=');
+                            let key = pair[0], val = pair[1];
+                            $('input[name="'+key+'"]').val(val);
+                            $('select[name="'+key+'"]').val(val);
+                            decodeURI(data.filterData[key]=val);
+                        });
+                    }
+                },
+                setPaginate:function(e){
+                    this.filterData.paginate=e.target.value;
+                    var form = document.getElementById("optionSubmit");
+                    form.submit();
+                },
+                setCarrier:function (e){
+                    this.filterData.carrier_id=e.target.value;
+                    var form = document.getElementById("optionSubmit");
+                    form.submit();
+                },
+                setProvince:function (e){
+                    this.filterData.province_id=e.target.value;
+                    var form = document.getElementById("optionSubmit");
+                    form.submit();
+                },
+            }
+        });
+    </script>
+@endsection

+ 19 - 0
resources/views/waybill/waybillPriceModel/menu.blade.php

@@ -0,0 +1,19 @@
+<div class="container">
+    <div class="card" style="background: #f9f0f0;transform: scale(0.95)">
+        <ul class="nav nav-pills">
+            @can('计费模型-查询')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('waybill/waybillPriceModel')}}" :class="{active:isActive('',3)}">查询</a>
+                </li> @endcan
+            @can('计费模型-录入')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('waybill/waybillPriceModel/create')}}" :class="{active:isActive('create',3)}">录入</a>
+                </li> @endcan
+            @can('计费模型-录入')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('waybill/waybillPriceModel/excel/goImport')}}" :class="{active:isActive('goImport',4)}">导入</a>
+                </li> @endcan
+            {{$slot}}
+        </ul>
+    </div>
+</div>

+ 8 - 3
routes/web.php

@@ -39,8 +39,15 @@ Route::resource('maintenance/province','ProvincesController');
 Route::resource('maintenance/city','CitiesController');
 Route::resource('maintenance/commodity', 'CommodityController');
 
+Route::resource('waybill/waybillPriceModel','WaybillPriceModelsController');
+Route::get('waybill/waybillPriceModel/excel/goImport',function (){return view('waybill.waybillPriceModel.import');});
+Route::get('waybill/waybillPriceModel/cities/{province_id}','WaybillPriceModelsController@getCities');
+
+Route::resource('waybill/waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
+Route::resource('waybill/waybillFinancialExcepted','WaybillFinancialExceptedController');
 
 Route::resource('waybill','WaybillsController');
+Route::post('waybill/is/waybillPriceModel','WaybillsController@isWaybillPriceModel');
 Route::any('waybill/waybillAudit','WaybillsController@waybillAudit');
 Route::any('waybill/waybillEdit/{id}','WaybillsController@waybillEdit');
 Route::any('waybill/waybillRetreatAudit','WaybillsController@waybillRetreatAudit');
@@ -49,10 +56,8 @@ Route::any('waybillExport/{id}','WaybillsController@waybillExport');
 Route::any('waybill/waybillUpdate/{id}','WaybillsController@waybillUpdate');
 
 
-Route::resource('waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
 Route::any('waybillFinancialSnapshot/export/{id}','WaybillFinancialSnapshotsController@export');
-
-Route::resource('billingModel','BillingModelsController');
+Route::post('waybillPriceModel/excel/import','WaybillPriceModelsController@import');
 
 
 

+ 3 - 3
tests/Feature/WaybillsTest.php

@@ -2,10 +2,10 @@
 
 namespace Tests\Feature;
 
-use App\BillingModel;
+use App\WaybillPriceModel;
 use App\User;
 use App\Waybill;
-use App\WaybillCalculate;
+use App\WaybillPayoff;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Request;
 use phpDocumentor\Reflection\Types\This;
@@ -21,7 +21,7 @@ class WaybillsTest extends TestCase
 
         public  function testAddWaybill(){
             $waybill=new  Waybill([
-                'type'=>'直发',
+                'type'=>'直发',
                 'waybill_number'=>'BSZX19112530861455654',
                 'owner_id'=>1,
                 'wms_bill_number'=>'201900202455165454',

+ 5 - 5
tests/Unit/CarrierTest.php

@@ -47,7 +47,7 @@ class CarrierTest extends TestCase
 
         $carrier=new Carrier([
             'name'=>'货拉拉',
-            'mobile'=>'14569874587',
+            'mobile'=>'18601677143',
             'remark'=>'测试用例'
         ]);
         $result=$carrier->save();
@@ -88,13 +88,13 @@ class CarrierTest extends TestCase
     public function testStore(User $user,User $userMark){
         $response=$this->actingAs($user)->post('maintenance/carrier',['Carrier'=>[
             'name'=>'德邦',
-            'mobile'=>'47859632154',
+            'mobile'=>'18452365478',
             'remark'=>'测试'
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/carrier')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->post('maintenance/carrier',['Carrier'=>[
             'name'=>'德邦',
-            'mobile'=>'47859632154',
+            'mobile'=>'18452365478',
             'remark'=>'测试'
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
@@ -123,13 +123,13 @@ class CarrierTest extends TestCase
     public function testUpdate(User $user,Carrier $carrier,User $userMark){
         $response=$this->actingAs($user)->put("maintenance/carrier/$carrier->id",['Carrier'=>[
             'name'=>'辉腾',
-            'mobile'=>'11111111111',
+            'mobile'=>'021587468547',
             'remark'=>'测试更改'
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/carrier')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->put("maintenance/carrier/$carrier->id",['Carrier'=>[
             'name'=>'辉腾',
-            'mobile'=>'11111111111',
+            'mobile'=>'021587468547',
             'remark'=>'测试更改'
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');

+ 9 - 9
tests/Unit/CityTest.php

@@ -43,7 +43,7 @@ class CityTest extends TestCase
 
     public function testAddCity(){
         $city=new City([
-            'name'=>'商丘',
+            'name'=>'测试',
             'province_id'=>1,
         ]);
         $result=$city->save();
@@ -59,10 +59,10 @@ class CityTest extends TestCase
      */
     public function testIndex(City $city,User $user,User $userMark){
         $response=$this->actingAs($user)->get('maintenance/city');
-        $response->assertOk()->assertSee('商丘');
+        $response->assertOk();
         $responseMark=$this->actingAs($userMark)->get('maintenance/city');
         $responseMark->assertStatus(302)->assertRedirect('/');
-        $city=City::paginate(10);
+        $city=City::paginate(50);
         $this->assertNotEmpty($city);
     }
 
@@ -83,16 +83,16 @@ class CityTest extends TestCase
      * */
     public function testStore(User $user,User $userMark){
         $response=$this->actingAs($user)->post('maintenance/city',['City'=>[
-            'name'=>'驻马店',
+            'name'=>'测试Two',
             'province_id'=>1,
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/city')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->post('maintenance/city',['City'=>[
-            'name'=>'驻马店',
+            'name'=>'测试Two',
             'province_id'=>1,
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
-        $city=City::where('name','=','驻马店')->first();
+        $city=City::where('name','=','测试Two')->first();
         $result=$city->delete();
         $this->assertTrue($result);
     }
@@ -104,7 +104,7 @@ class CityTest extends TestCase
      */
     public function testEdit(City $city,User $user,User $userMark){
         $response=$this->actingAs($user)->get("maintenance/city/$city->id/edit");
-        $response->assertOk()->assertSee('商丘');
+        $response->assertOk()->assertSee('测试');
         $responseMark=$this->actingAs($userMark)->get("maintenance/city/$city->id/edit");
         $responseMark->assertStatus(302)->assertRedirect('/');
     }
@@ -116,12 +116,12 @@ class CityTest extends TestCase
      */
     public function testUpdate(City $city,User $user,User $userMark){
         $response=$this->actingAs($user)->put("maintenance/city/$city->id",['City'=>[
-            'name'=>'郑州',
+            'name'=>'测试Update',
             'province_id'=>1,
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/city')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->put("maintenance/city/$city->id",['City'=>[
-            'name'=>'郑州',
+            'name'=>'测试Update',
             'province_id'=>1,
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');

+ 8 - 8
tests/Unit/ProvinceTest.php

@@ -43,7 +43,7 @@ class ProvinceTest extends TestCase
 
     public function testAddProvince(){
         $province=new Province([
-            'name'=>'河南',
+            'name'=>'汉城',
         ]);
         $result=$province->save();
         $this->assertTrue($result);
@@ -58,7 +58,7 @@ class ProvinceTest extends TestCase
      */
     public function testIndex(Province $province,User $user,User $userMark){
         $response=$this->actingAs($user)->get('maintenance/province');
-        $response->assertOk()->assertSee('河南');
+        $response->assertOk()->assertSee('汉城');
         $responseMark=$this->actingAs($userMark)->get('maintenance/province');
         $responseMark->assertStatus(302)->assertRedirect('/');
         $province=Province::paginate(10);
@@ -82,14 +82,14 @@ class ProvinceTest extends TestCase
      */
     public function testStore(User $user,User $userMark){
         $response=$this->actingAs($user)->post('maintenance/province',['Province'=>[
-            'name'=>'山东',
+            'name'=>'帝都',
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/province')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->post('maintenance/province',['Province'=>[
-            'name'=>'山东',
+            'name'=>'帝都',
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
-        $province=Province::where('name','=','山东')->first();
+        $province=Province::where('name','=','帝都')->first();
         $result=$province->delete();
         $this->assertTrue($result);
     }
@@ -101,7 +101,7 @@ class ProvinceTest extends TestCase
      */
     public function testEdit(Province $province,User $user,User $userMark){
         $response=$this->actingAs($user)->get("maintenance/province/$province->id/edit");
-        $response->assertOk()->assertSee('河南');
+        $response->assertOk()->assertSee('汉城');
         $responseMark=$this->actingAs($userMark)->get("maintenance/province/$province->id/edit");
         $responseMark->assertStatus(302)->assertRedirect('/');
     }
@@ -113,11 +113,11 @@ class ProvinceTest extends TestCase
      */
     public function testUpdate(Province $province,User $user,User $userMark){
         $response=$this->actingAs($user)->put("maintenance/province/$province->id",['Province'=>[
-            'name'=>'北京'
+            'name'=>'圣都'
         ]]);
         $response->assertStatus(302)->assertRedirect('maintenance/province')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->put("maintenance/province/$province->id",['Province'=>[
-            'name'=>'北京'
+            'name'=>'圣都'
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
     }

+ 3 - 3
tests/Unit/UnitTest.php

@@ -43,7 +43,7 @@ class UnitTest extends TestCase
 
     public function testAddUnit(){
         $unit=new Unit([
-            'name'=>'kg',
+            'name'=>'cm',
         ]);
         $result=$unit->save();
         $this->assertTrue($result);
@@ -58,7 +58,7 @@ class UnitTest extends TestCase
      */
     public function testIndex(Unit $unit,User $user,User $userMark){
         $response=$this->actingAs($user)->get('maintenance/unit');
-        $response->assertOk()->assertSee('kg');
+        $response->assertOk()->assertSee('cm');
         $responseMark=$this->actingAs($userMark)->get('maintenance/unit');
         $responseMark->assertStatus(302)->assertRedirect('/');
         $unit=Unit::paginate(10);
@@ -101,7 +101,7 @@ class UnitTest extends TestCase
      */
     public function testEdit(Unit $unit,User $user,User $userMark){
         $response=$this->actingAs($user)->get("maintenance/unit/$unit->id/edit");
-        $response->assertOk()->assertSee('kg');
+        $response->assertOk()->assertSee('cm');
         $responseMark=$this->actingAs($userMark)->get("maintenance/unit/$unit->id/edit");
         $responseMark->assertStatus(302)->assertRedirect('/');
     }

+ 89 - 0
tests/Unit/WaybillFinancialExceptedTest.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace Tests\Unit;
+
+use App\Authority;
+use App\Role;
+use App\User;
+use App\WaybillFinancialExcepted;
+use Illuminate\Support\Facades\DB;
+use Tests\TestCase;
+use Illuminate\Foundation\Testing\WithFaker;
+use Illuminate\Foundation\Testing\RefreshDatabase;
+
+class WaybillFinancialExceptedTest extends TestCase
+{
+    public function testUserMark(){
+        $userMark=factory(User::class)->create();
+        $this->assertNotEmpty($userMark->id);
+        return $userMark;
+    }
+
+    public function testRole(){
+        $role=Role::create([
+            'name'=>'测试admin'
+        ]);
+        $this->assertNotEmpty($role->id);
+        $authorities= Authority::get();
+        foreach ($authorities as $authority){
+            DB::table('authority_role')->insert(['id_authority'=>$authority->id,'id_role'=>$role->id]);
+        }
+        return $role;
+    }
+
+    /**
+     * @depends testRole
+     */
+    public function testUser(Role $role){
+        $user=factory(User::class)->create();
+        DB::table('user_role')->insert(['id_user'=>$user->id,'id_role'=>$role->id]);
+        $this->assertNotEmpty($user->id);
+        return $user;
+    }
+
+
+    public function testAdd(){
+        $waybillFinancialExcepted=new WaybillFinancialExcepted([
+              'waybill_id'=>1,
+             'json_content'=>"{'waybill_number':'BSZX5416854985'}"
+        ]);
+        $result=$waybillFinancialExcepted->save();
+        $this->assertTrue($result);
+        return $waybillFinancialExcepted;
+    }
+
+    /**
+     * @depends testAdd
+     * @depends testUser
+     * @depends testUserMark
+     */
+    public function testIndex(WaybillFinancialExcepted $waybillFinancialExcepted, User $user,User $userMark){
+        $response=$this->actingAs($user)->get('waybill/waybillFinancialExcepted');
+        $response->assertOk()->assertSee('1');
+        $responseMark=$this->actingAs($userMark)->get('waybill/waybillFinancialExcepted');
+        $responseMark->assertStatus(302)->assertRedirect('/');
+        $waybillFinancialExcepted=WaybillFinancialExcepted::paginate(10);
+        $this->assertNotEmpty($waybillFinancialExcepted);
+    }
+
+    /**
+     * @depends testAdd
+     * @depends testUser
+     * @depends testUserMark
+     * @depends testRole
+     */
+    public function testDestroy(WaybillFinancialExcepted $waybillFinancialExcepted,User $user,User $userMark,Role $role){
+        $waybillFinancialExcepted->delete();
+        $result=WaybillFinancialExcepted::find($waybillFinancialExcepted->id);
+        $this->assertEmpty($result);
+        $result=$user->delete();
+        $this->assertTrue($result);
+        $this->assertNotEmpty($userMark->id);
+        $resultUserMark=$userMark->delete();
+        $this->assertTrue($resultUserMark);
+        $resultRole=$role->delete();
+        $this->assertTrue($resultRole);
+        DB::table('authority_role')->where('id_role','=',$role->id)->delete();
+        DB::table('user_role')->where('id_role','=',$role->id)->delete();
+    }
+}

+ 2 - 2
tests/Unit/WaybillFinancialSnapshotTest.php

@@ -58,9 +58,9 @@ class WaybillFinancialSnapshotTest extends TestCase
      * @depends testUserMark
      */
     public function testIndex(WaybillFinancialSnapshot $waybillFinancialSnapshot, User $user,User $userMark){
-        $response=$this->actingAs($user)->get('waybillFinancialSnapshot');
+        $response=$this->actingAs($user)->get('waybill/waybillFinancialSnapshot');
         $response->assertOk()->assertSee('1');
-        $responseMark=$this->actingAs($userMark)->get('waybillFinancialSnapshot');
+        $responseMark=$this->actingAs($userMark)->get('waybill/waybillFinancialSnapshot');
         $responseMark->assertStatus(302)->assertRedirect('/');
         $waybillFinancialSnapshot=WaybillFinancialSnapshot::paginate(10);
         $this->assertNotEmpty($waybillFinancialSnapshot);

+ 43 - 39
tests/Unit/BillingModelTest.php → tests/Unit/WaybillPriceModelTest.php

@@ -3,7 +3,7 @@
 namespace Tests\Unit;
 
 use App\Authority;
-use App\BillingModel;
+use App\WaybillPriceModel;
 use App\Role;
 use App\User;
 use Illuminate\Support\Facades\DB;
@@ -11,7 +11,7 @@ use Tests\TestCase;
 use Illuminate\Foundation\Testing\WithFaker;
 use Illuminate\Foundation\Testing\RefreshDatabase;
 
-class BillingModelTest extends TestCase
+class WaybillPriceModelTest extends TestCase
 {
 
     public function testUserMark(){
@@ -42,8 +42,8 @@ class BillingModelTest extends TestCase
         return $user;
     }
 
-    public function testAddBillingModel(){
-        $billingModel=new BillingModel([
+    public function testAddWaybillPriceModel(){
+        $waybillPriceModel=new WaybillPriceModel([
             'carrier_id'=>1,
             'province_id'=>1,
             'city_id'=>1,
@@ -53,24 +53,24 @@ class BillingModelTest extends TestCase
             'unit_price'=>1,
             'initial_weight'=>10
         ]);
-        $result=$billingModel->save();
+        $result=$waybillPriceModel->save();
         $this->assertTrue($result);
-        $this->assertNotEmpty($billingModel);
-        return $billingModel;
+        $this->assertNotEmpty($waybillPriceModel);
+        return $waybillPriceModel;
     }
 
     /**
-     * @depends testAddBillingModel
+     * @depends testAddWaybillPriceModel
      * @depends testUser
      * @depends testUserMark
      */
-    public function testIndex(BillingModel $billingModel,User $user,User $userMark){
-        $response=$this->actingAs($user)->get('/billingModel');
+    public function testIndex(WaybillPriceModel $waybillPriceModel,User $user,User $userMark){
+        $response=$this->actingAs($user)->get('waybill/waybillPriceModel');
         $response->assertStatus(200)->assertSee('5000');
-        $responseMark=$this->actingAs($userMark)->get('/billingModel');
+        $responseMark=$this->actingAs($userMark)->get('waybill/waybillPriceModel');
         $responseMark->assertStatus(302)->assertRedirect('/');
-        $billingModel=BillingModel::paginate(50);
-        $this->assertNotEmpty($billingModel);
+        $waybillPriceModel=WaybillPriceModel::paginate(50);
+        $this->assertNotEmpty($waybillPriceModel);
     }
 
     /**
@@ -78,9 +78,9 @@ class BillingModelTest extends TestCase
      * @depends testUserMark
      */
     public function testCreate(User $user,User $userMark){
-        $response=$this->actingAs($user)->get('/billingModel/create');
+        $response=$this->actingAs($user)->get('waybill/waybillPriceModel/create');
         $response->assertOk();
-        $responseMark=$this->actingAs($userMark)->get('/billingModel/create');
+        $responseMark=$this->actingAs($userMark)->get('waybill/waybillPriceModel/create');
         $responseMark->assertStatus(302)->assertRedirect('/');
     }
 
@@ -90,18 +90,19 @@ class BillingModelTest extends TestCase
      * @depends testUserMark
      */
     public function testStore(User $user,User $userMark){
-        $response=$this->actingAs($user)->post('billingModel',['BillingModel'=>[
+        $response=$this->actingAs($user)->post('waybill/waybillPriceModel',['WaybillPriceModel'=>[
             'carrier_id'=>12,
             'province_id'=>4,
-            'city_id'=>3,
-            'unit_id'=>3,
+            'city_id'=>1,
+            'unit_id'=>1,
             'range_min'=>0,
             'range_max'=>1000,
             'unit_price'=>1,
+            'base_fee'=>null,
             'initial_weight'=>10
         ]]);
-        $response->assertStatus(302)->assertRedirect('/billingModel')->assertSessionHas('successTip');
-        $responseMark=$this->actingAs($userMark)->post('billingModel',['BillingModel'=>[
+        $response->assertStatus(302)->assertRedirect('waybill/waybillPriceModel')->assertSessionHas('successTip');
+        $responseMark=$this->actingAs($userMark)->post('waybill/waybillPriceModel',['WaybillPriceModel'=>[
             'carrier_id'=>12,
             'province_id'=>4,
             'city_id'=>3,
@@ -109,69 +110,72 @@ class BillingModelTest extends TestCase
             'range_min'=>0,
             'range_max'=>1000,
             'unit_price'=>1,
+            'base_fee'=>null,
             'initial_weight'=>10
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
-        $billingModel=BillingModel::whereRaw('carrier_id = ? and province_id = ? and city_id=? and unit_id=? and range_min=? and range_max=? and unit_price=? and initial_weight=?',[
-            12,4,3,3,0.00,1000.00,1.00,10.00
+        $waybillPriceModel=WaybillPriceModel::whereRaw('carrier_id = ? and province_id = ? and city_id=? and unit_id=? and range_min=? and range_max=? and unit_price=? and initial_weight=?',[
+            12,4,1,1,0.00,1000.00,1.00,10.00
         ])->first();
-        $result=$billingModel->delete();
+        $result=$waybillPriceModel->delete();
         $this->assertTrue($result);
 
     }
 
     /**
      * @depends testUser
-     * @depends testAddBillingModel
+     * @depends testAddWaybillPriceModel
      * @depends testUserMark
      */
-    public function testEdit(User $user,BillingModel $billingModel,User $userMark){
-        $response=$this->actingAs($user)->get("/billingModel/$billingModel->id/edit");
+    public function testEdit(User $user,WaybillPriceModel $waybillPriceModel,User $userMark){
+        $response=$this->actingAs($user)->get("waybill/waybillPriceModel/$waybillPriceModel->id/edit");
         $response->assertOk();
-        $responseMark=$this->actingAs($userMark)->get("/billingModel/$billingModel->id/edit");
+        $responseMark=$this->actingAs($userMark)->get("waybill/waybillPriceModel/$waybillPriceModel->id/edit");
         $responseMark->assertStatus(302)->assertRedirect('/');
     }
 
     /**
-     * @depends testAddBillingModel
+     * @depends testAddWaybillPriceModel
      * @depends testUser
      * @depends testUserMark
      */
-    public function testUpdate(BillingModel $billingModel,User $user,User $userMark){
-        $response=$this->actingAs($user)->put('/billingModel/'.$billingModel->id,['BillingModel'=>[
+    public function testUpdate(WaybillPriceModel $waybillPriceModel,User $user,User $userMark){
+        $response=$this->actingAs($user)->put('waybill/waybillPriceModel/'.$waybillPriceModel->id,['WaybillPriceModel'=>[
             'carrier_id'=>2,
             'province_id'=>2,
-            'city_id'=>2,
-            'unit_id'=>2,
+            'city_id'=>11,
+            'unit_id'=>1,
             'range_min'=>500,
             'range_max'=>8000,
             'unit_price'=>2,
+            'base_fee'=>null,
             'initial_weight'=>5
         ]]);
-        $response->assertStatus(302)->assertRedirect('/billingModel')->assertSessionHas('successTip');
-        $responseMark=$this->actingAs($userMark)->put('/billingModel/'.$billingModel->id,['BillingModel'=>[
+        $response->assertStatus(302)->assertRedirect('waybill/waybillPriceModel')->assertSessionHas('successTip');
+        $responseMark=$this->actingAs($userMark)->put('waybill/waybillPriceModel/'.$waybillPriceModel->id,['WaybillPriceModel'=>[
             'carrier_id'=>2,
             'province_id'=>2,
-            'city_id'=>2,
+            'city_id'=>11,
             'unit_id'=>2,
             'range_min'=>500,
             'range_max'=>8000,
             'unit_price'=>2,
+            'base_fee'=>null,
             'initial_weight'=>5
         ]]);
         $responseMark->assertStatus(302)->assertRedirect('/');
     }
 
     /**
-     * @depends testAddBillingModel
+     * @depends testAddWaybillPriceModel
      * @depends testUser
      * @depends testUserMark
      * @depends testRole
      */
-    public function testDestroy(BillingModel $billingModel,User $user,User $userMark,Role $role){
-        $response=$this->actingAs($user)->json('delete','/billingModel/'.$billingModel->id,['id'=>$billingModel->id]);
+    public function testDestroy(WaybillPriceModel $waybillPriceModel,User $user,User $userMark,Role $role){
+        $response=$this->actingAs($user)->json('delete','waybill/waybillPriceModel/'.$waybillPriceModel->id,['id'=>$waybillPriceModel->id]);
         $response->assertOk();
-        $responseMark=$this->actingAs($userMark)->json('delete','/billingModel/'.$billingModel->id,['id'=>$billingModel->id]);
+        $responseMark=$this->actingAs($userMark)->json('delete','waybill/waybillPriceModel/'.$waybillPriceModel->id,['id'=>$waybillPriceModel->id]);
         $responseMark->assertStatus(302)->assertRedirect('/');
         $response->assertJson(['success'=>true]);
         $result=$user->delete();

+ 43 - 77
tests/Unit/WaybillTest.php

@@ -2,13 +2,14 @@
 
 namespace Tests\Unit;
 
-use App\AuditLog;
+use App\WaybillAuditLog;
 use App\Authority;
-use App\BillingModel;
+use App\WaybillPriceModel;
 use App\Role;
 use App\User;
 use App\Waybill;
-use App\WaybillCalculate;
+use App\WaybillPayoff;
+use App\WaybillFinancialExcepted;
 use App\WaybillFinancialSnapshot;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Request;
@@ -48,7 +49,7 @@ class WaybillTest extends TestCase
 
     public function testAddWaybill(){
         $waybill=new Waybill([
-            'type'=>'直发',
+            'type'=>'直发',
             'state'=>'未审核',
             'waybill_number'=>'BSZX12345848854',
             'owner_id'=>2,
@@ -56,7 +57,7 @@ class WaybillTest extends TestCase
             'origination'=>'上海松江',
             'destination'=>'郑州中原',
             'recipient'=>'elder sister',
-            'recipient_mobile'=>'12364851478',
+            'recipient_mobile'=>'18458741254',
             'charge'=>586,
             'ordering_remark'=>'禁'
         ]);
@@ -107,7 +108,7 @@ class WaybillTest extends TestCase
             'origination'=>'上海',
             'destination'=>'商丘',
             'recipient'=>'周某',
-            'recipient_mobile'=>'12364851478',
+            'recipient_mobile'=>'01547896548',
             'charge'=>58.6,
             'ordering_remark'=>''
         ]);
@@ -119,7 +120,7 @@ class WaybillTest extends TestCase
             'origination'=>'上海',
             'destination'=>'商丘',
             'recipient'=>'周某',
-            'recipient_mobile'=>'12364851478',
+            'recipient_mobile'=>'01547896548',
             'charge'=>58.6,
             'ordering_remark'=>''
         ]);
@@ -144,11 +145,11 @@ class WaybillTest extends TestCase
      * @depends testUserMark
      */
     public function testUpdate(User $user,Waybill $waybill,User $userMark){
-//直发数据校验通过
+//直发数据校验通过
         $responseZFTrue=$this->actingAs($user)->put('waybill/'.$waybill->id,[
-            'type'=>'直发',
+            'type'=>'直发',
             'carrier_id'=>1,
-            'carrier_bill'=>'78521596545S',
+            'carrier_bill'=>'0154786548',
             'carType_id'=>1,
             'fee'=>500,
             'other_fee'=>20,
@@ -157,9 +158,9 @@ class WaybillTest extends TestCase
         ]);
         $responseZFTrue->assertStatus(302)->assertRedirect('waybill')->assertSessionHas('successTip');
         $responseZFMark=$this->actingAs($userMark)->put('waybill/'.$waybill->id,[
-            'type'=>'直发',
+            'type'=>'直发',
             'carrier_id'=>1,
-            'carrier_bill'=>'78521596545S',
+            'carrier_bill'=>'0154786548',
             'carType_id'=>1,
             'fee'=>500,
             'other_fee'=>20,
@@ -167,16 +168,16 @@ class WaybillTest extends TestCase
             'dispatch_remark'=>''
         ]);
         $responseZFMark->assertStatus(302)->assertRedirect('/');
-        $waybillCalculates=WaybillCalculate::where('waybill_id','=',$waybill->id)->first();
-        $this->assertNotEmpty($waybillCalculates);
-        $this->assertEquals(490.00,$waybillCalculates->total_expense);
-        $this->assertEquals(586.00,$waybillCalculates->total_receivable);
-        $this->assertEquals(96.00,$waybillCalculates->gross_margin);
-//直发数据校验失败
+        $waybillPayoffs=WaybillPayoff::where('waybill_id','=',$waybill->id)->first();
+        $this->assertNotEmpty($waybillPayoffs);
+        $this->assertEquals(490.00,$waybillPayoffs->total_expense);
+        $this->assertEquals(586.00,$waybillPayoffs->total_receivable);
+        $this->assertEquals(96.00,$waybillPayoffs->gross_margin);
+//直发数据校验失败
         $responseZFFalse=$this->actingAs($user)->put('waybill/'.$waybill->id,[
-            'type'=>'直发',
+            'type'=>'直发',
             'carrier_id'=>1,
-            'carrier_bill'=>'78521596545S',
+            'carrier_bill'=>'20',
             'other_fee'=>'a456d',
             'collect_fee'=>30,
             'dispatch_remark'=>''
@@ -188,7 +189,7 @@ class WaybillTest extends TestCase
             'state'=>'未审核',
             'waybill_number'=>'BSZX12345146854854',
             'owner_id'=>2,
-            'wms_bill_number'=>'54848464854S',
+            'wms_bill_number'=>'01547860548',
             'origination'=>'上海',
             'destination'=>'郑州',
             'recipient'=>'elder sister',
@@ -202,7 +203,7 @@ class WaybillTest extends TestCase
         $responseZXFalse=$this->actingAs($user)->put('waybill/'.$waybillZX->id,[
             'type'=>'专线',
             'carrier_id'=>1,
-            'carrier_bill'=>'87988484894',
+            'carrier_bill'=>'01547860548',
             'origination_city_id'=>1,
             'destination_city_id'=>2,
             'warehouse_weight'=>25,
@@ -213,11 +214,11 @@ class WaybillTest extends TestCase
             'other_fee'=>20,
             'dispatch_remark'=>''
         ]);
-        $responseZXFalse->assertStatus(302)->assertRedirect('/')->assertSessionHas('notBillingModel');
+        $responseZXFalse->assertStatus(302)->assertRedirect('waybill');
         $responseZXMark=$this->actingAs($userMark)->put('waybill/'.$waybillZX->id,[
             'type'=>'专线',
             'carrier_id'=>1,
-            'carrier_bill'=>'87988484894',
+            'carrier_bill'=>'01547860548',
             'origination_city_id'=>1,
             'destination_city_id'=>2,
             'warehouse_weight'=>25,
@@ -229,49 +230,14 @@ class WaybillTest extends TestCase
             'dispatch_remark'=>''
         ]);
         $responseZXMark->assertStatus(302)->assertRedirect('/');
-//定义计费模型
-        $billingModel=new BillingModel([
-            'carrier_id'=>1,
-            'province_id'=>1,
-            'city_id'=>2,
-            'unit_id'=>1,
-            'range_min'=>0,
-            'range_max'=>5000,
-            'unit_price'=>1,
-            'initial_weight'=>10
-        ]);
-        $billingModel->save();
-        $responseZXFalse=$this->actingAs($user)->put('waybill/'.$waybillZX->id,[
-            'type'=>'专线',
-            'carrier_id'=>1,
-            'carrier_bill'=>'87988484894',
-            'origination_city_id'=>1,
-            'destination_city_id'=>2,
-            'warehouse_weight'=>25,
-            'warehouse_weight_unit_id'=>1,
-            'carrier_weight'=>25,
-            'carrier_weight_unit_id'=>1,
-            'pick_up_fee'=>500,
-            'other_fee'=>20,
-            'dispatch_remark'=>''
-        ]);
-        $responseZXFalse->assertStatus(302)->assertRedirect('waybill')->assertSessionHas('successTip');
         $fee=Waybill::find($waybillZX->id);
-        $this->assertEquals(25.00,$fee->fee);
-        $waybillCalculatesZX=WaybillCalculate::where('waybill_id','=',$waybillZX->id)->first();
-        $this->assertNotEmpty($waybillCalculatesZX);
-        $this->assertEquals(545.00,$waybillCalculatesZX->total_expense);
-        $this->assertEquals(586.00,$waybillCalculatesZX->total_receivable);
-        $this->assertEquals(41.00,$waybillCalculatesZX->gross_margin);
-
+        $this->assertEquals(null,$fee->fee);
+        $waybillPayoffsZX=WaybillPayoff::where('waybill_id','=',$waybillZX->id)->first();
+        $this->assertNotEmpty($waybillPayoffsZX);
+        $waybillPayoffsZX->delete();
 //清除冗余数据
         $result=$waybillZX->delete();
         $this->assertTrue($result);
-        $resultBilling=$billingModel->delete();
-        $this->assertTrue($resultBilling);
-        $resultWaybillCalculatesZX=$waybillCalculatesZX->delete();
-        $this->assertTrue($resultWaybillCalculatesZX);
-
     }
 
     /**
@@ -281,7 +247,7 @@ class WaybillTest extends TestCase
      */
     public function testWaybillUpdate(User $user,Waybill $waybill,User $userMark){
         $response=$this->actingAs($user)->put('waybill/'.$waybill->id,[
-            'type'=>'直发',
+            'type'=>'直发',
             'carrier_id'=>2,
             'carrier_bill'=>'5a4d664585',
             'carType_id'=>2,
@@ -292,7 +258,7 @@ class WaybillTest extends TestCase
         ]);
         $response->assertStatus(302)->assertRedirect('waybill')->assertSessionHas('successTip');
         $responseMark=$this->actingAs($userMark)->put('waybill/'.$waybill->id,[
-            'type'=>'直发',
+            'type'=>'直发',
             'carrier_id'=>2,
             'carrier_bill'=>'5a4d664585',
             'carType_id'=>2,
@@ -352,7 +318,7 @@ class WaybillTest extends TestCase
     public function testWaybillEndAudit(User $user,Waybill $waybill,User $userMark){
         //第一次请求成功
         $response=$this->actingAs($user)->json('post','waybill/waybillEndAudit',['id'=>$waybill->id]);
-        $response->assertJson(['success'=>true,'state'=>'完结']);
+        $response->assertJson(['success'=>true,'state'=>'未定义计费模型']);
         $responseMark=$this->actingAs($userMark)->json('post','waybill/waybillEndAudit',['id'=>$waybill->id]);
         $responseMark->assertStatus(302)->assertRedirect('/');
         //第二次请求拦截
@@ -371,23 +337,23 @@ class WaybillTest extends TestCase
         $this->assertNotEmpty($waybill);
         $result=$waybill->delete();
         $this->assertTrue($result);
-        $waybillCalculates=WaybillCalculate::where('waybill_id','=',$waybill->id)->first();
-        $this->assertNotEmpty($waybillCalculates);
-        $resultWaybillCalculates=$waybillCalculates->delete();
-        $this->assertTrue($resultWaybillCalculates);
+        $waybillPayoffs=WaybillPayoff::where('waybill_id','=',$waybill->id)->first();
+        $this->assertNotEmpty($waybillPayoffs);
+        $resultWaybillPayoffs=$waybillPayoffs->delete();
+        $this->assertTrue($resultWaybillPayoffs);
         $waybillStore=Waybill::where('wms_bill_number','=','ad544da6584')->first();
         $this->assertNotEmpty($waybillStore);
         $resultWaybillStore=$waybillStore->delete();
         $this->assertTrue($resultWaybillStore);
-        $waybillFinancialSnapshots=WaybillFinancialSnapshot::where('waybill_id','=',$waybill->id)->first();
+        $waybillFinancialSnapshots=WaybillFinancialExcepted::where('waybill_id','=',$waybill->id)->first();
         $r=$waybillFinancialSnapshots->delete();
         $this->assertTrue($r);
-        $isAudit=AuditLog::withTrashed()->whereRaw('waybill_id = ? and audit_stage = ?',[$waybill->id,"运单阶段"])->first();
-        $resultAuditLogWaybill=$isAudit->forceDelete();
-        $this->assertTrue($resultAuditLogWaybill);
-        $auditLogDispatch=AuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$waybill->id,"调度阶段"])->first();
-        $resultAuditLogDispatch=$auditLogDispatch->forceDelete();
-        $this->assertTrue($resultAuditLogDispatch);
+        $isAudit=WaybillAuditLog::withTrashed()->whereRaw('waybill_id = ? and audit_stage = ?',[$waybill->id,"运单阶段"])->first();
+        $resultWaybillAuditLogWaybill=$isAudit->forceDelete();
+        $this->assertTrue($resultWaybillAuditLogWaybill);
+        $waybillAuditLogDispatch=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$waybill->id,"调度阶段"])->first();
+        $resultWaybillAuditLogDispatch=$waybillAuditLogDispatch->forceDelete();
+        $this->assertTrue($resultWaybillAuditLogDispatch);
         $result=$user->delete();
         $this->assertTrue($result);
         $this->assertNotEmpty($userMark->id);

Разница между файлами не показана из-за своего большого размера
+ 5 - 0
tests/codeCoverage/.css/bootstrap.min.css


+ 0 - 0
tests/codeCoverage/.css/custom.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tests/codeCoverage/.css/nv.d3.min.css


+ 5 - 0
tests/codeCoverage/.css/octicons.css

@@ -0,0 +1,5 @@
+.octicon {
+  display: inline-block;
+  vertical-align: text-top;
+  fill: currentColor;
+}

+ 122 - 0
tests/codeCoverage/.css/style.css

@@ -0,0 +1,122 @@
+body {
+ padding-top: 10px;
+}
+
+.popover {
+ max-width: none;
+}
+
+.octicon {
+ margin-right:.25em;
+}
+
+.table-bordered>thead>tr>td {
+ border-bottom-width: 1px;
+}
+
+.table tbody>tr>td, .table thead>tr>td {
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+.table-condensed tbody>tr>td {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.table .progress {
+ margin-bottom: inherit;
+}
+
+.table-borderless th, .table-borderless td {
+ border: 0 !important;
+}
+
+.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success {
+ background-color: #dff0d8;
+}
+
+.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests {
+ background-color: #c3e3b5;
+}
+
+.table tbody tr.covered-by-small-tests, li.covered-by-small-tests {
+ background-color: #99cb84;
+}
+
+.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger {
+ background-color: #f2dede;
+}
+
+.table tbody td.warning, li.warning, span.warning {
+ background-color: #fcf8e3;
+}
+
+.table tbody td.info {
+ background-color: #d9edf7;
+}
+
+td.big {
+ width: 117px;
+}
+
+td.small {
+}
+
+td.codeLine {
+ font-family: "Source Code Pro", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ white-space: pre;
+}
+
+td span.comment {
+ color: #888a85;
+}
+
+td span.default {
+ color: #2e3436;
+}
+
+td span.html {
+ color: #888a85;
+}
+
+td span.keyword {
+ color: #2e3436;
+ font-weight: bold;
+}
+
+pre span.string {
+ color: #2e3436;
+}
+
+span.success, span.warning, span.danger {
+ margin-right: 2px;
+ padding-left: 10px;
+ padding-right: 10px;
+ text-align: center;
+}
+
+#classCoverageDistribution, #classComplexity {
+ height: 200px;
+ width: 475px;
+}
+
+#toplink {
+ position: fixed;
+ left: 5px;
+ bottom: 5px;
+ outline: 0;
+}
+
+svg text {
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #666;
+ fill: #666;
+}
+
+.scrollbox {
+ height:245px;
+ overflow-x:hidden;
+ overflow-y:scroll;
+}

+ 1 - 0
tests/codeCoverage/.icons/file-code.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M8.5 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V4.5L8.5 1zM11 14H1V2h7l3 3v9zM5 6.98L3.5 8.5 5 10l-.5 1L2 8.5 4.5 6l.5.98zM7.5 6L10 8.5 7.5 11l-.5-.98L8.5 8.5 7 7l.5-1z"/></svg>

+ 1 - 0
tests/codeCoverage/.icons/file-directory.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><path fill-rule="evenodd" d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"/></svg>

Разница между файлами не показана из-за своего большого размера
+ 5 - 0
tests/codeCoverage/.js/bootstrap.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tests/codeCoverage/.js/d3.min.js


+ 61 - 0
tests/codeCoverage/.js/file.js

@@ -0,0 +1,61 @@
+  $(function() {
+   var $window     = $(window)
+     , $top_link   = $('#toplink')
+     , $body       = $('body, html')
+     , offset      = $('#code').offset().top
+     , hidePopover = function ($target) {
+        $target.data('popover-hover', false);
+
+        setTimeout(function () {
+         if (!$target.data('popover-hover')) {
+          $target.popover('hide');
+         }
+        }, 300);
+     };
+
+   $top_link.hide().click(function(event) {
+    event.preventDefault();
+    $body.animate({scrollTop:0}, 800);
+   });
+
+   $window.scroll(function() {
+    if($window.scrollTop() > offset) {
+     $top_link.fadeIn();
+    } else {
+     $top_link.fadeOut();
+    }
+   }).scroll();
+
+   $('.popin')
+    .popover({trigger: 'manual'})
+    .on({
+     'mouseenter.popover': function () {
+      var $target = $(this);
+
+      $target.data('popover-hover', true);
+
+      // popover already displayed
+      if ($target.next('.popover').length) {
+       return;
+      }
+
+      // show the popover
+      $target.popover('show');
+
+      // register mouse events on the popover
+      $target.next('.popover:not(.popover-initialized)')
+       .on({
+        'mouseenter': function () {
+         $target.data('popover-hover', true);
+        },
+        'mouseleave': function () {
+         hidePopover($target);
+        }
+       })
+       .addClass('popover-initialized');
+     },
+     'mouseleave.popover': function () {
+      hidePopover($(this));
+     }
+    });
+  });

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
tests/codeCoverage/.js/jquery.min.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
tests/codeCoverage/.js/nv.d3.min.js


Разница между файлами не показана из-за своего большого размера
+ 3 - 0
tests/codeCoverage/.js/popper.min.js


+ 196 - 0
tests/codeCoverage/AuditLog.php.html

@@ -0,0 +1,196 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\WaybillAuditLog.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">WaybillAuditLog.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\WaybillAuditLog">WaybillAuditLog</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger small">2.50</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#16"><abbr title="waybill()">waybill</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#19"><abbr title="user()">user</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">SoftDeletes</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">WaybillAuditLog</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">SoftDeletes</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$table</span><span class="keyword">=</span><span class="default">'waybillAuditLogs'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'waybill_id'</span><span class="keyword">,</span><span class="default">'audit_stage'</span><span class="keyword">,</span><span class="default">'user_id'</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">waybill</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\Waybill'</span><span class="keyword">,</span><span class="default">'waybill_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 20" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillTest::testWaybillEndAudit&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\User'</span><span class="keyword">,</span><span class="default">'user_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 180 - 0
tests/codeCoverage/Authority.php.html


+ 349 - 0
tests/codeCoverage/BillingModel.php.html

@@ -0,0 +1,349 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\WaybillPriceModel.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">WaybillPriceModel.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="success">Total</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">8&nbsp;/&nbsp;8</div></td>
+       <td class="success small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">8&nbsp;/&nbsp;8</div></td>
+      </tr>
+
+      <tr>
+       <td class="success"><abbr title="App\WaybillPriceModel">WaybillPriceModel</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">8&nbsp;/&nbsp;8</div></td>
+       <td class="success small">12</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">8&nbsp;/&nbsp;8</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#21"><abbr title="carrier()">carrier</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#25"><abbr title="province()">province</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#29"><abbr title="city()">city</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#33"><abbr title="unit()">unit</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#37"><abbr title="getCarrierNameAttribute()">getCarrierNameAttribute</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#40"><abbr title="getProvinceNameAttribute()">getProvinceNameAttribute</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#43"><abbr title="getCityNameAttribute()">getCityNameAttribute</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#46"><abbr title="getUnitNameAttribute()">getUnitNameAttribute</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">WaybillPriceModel</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'carrier_id'</span><span class="keyword">,</span><span class="default">'province_id'</span><span class="keyword">,</span><span class="default">'city_id'</span><span class="keyword">,</span><span class="default">'unit_id'</span><span class="keyword">,</span><span class="default">'range_min'</span><span class="keyword">,</span><span class="default">'range_max'</span><span class="keyword">,</span><span class="default">'unit_price'</span><span class="keyword">,</span><span class="default">'initial_weight'</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$appends</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'carrier_name'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'province_name'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'city_name'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'unit_name'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">carrier</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 22" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\Carrier'</span><span class="keyword">,</span><span class="default">'carrier_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">province</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 26" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\Province'</span><span class="keyword">,</span><span class="default">'province_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">city</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 30" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\City'</span><span class="keyword">,</span><span class="default">'city_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">unit</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 34" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\Unit'</span><span class="keyword">,</span><span class="default">'unit_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getCarrierNameAttribute</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 38" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'carrier'</span><span class="keyword">]</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'carrier'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">:</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getProvinceNameAttribute</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 41" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'province'</span><span class="keyword">]</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'province'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">:</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getCityNameAttribute</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 44" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'city'</span><span class="keyword">]</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'city'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">:</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getUnitNameAttribute</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 47" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillPriceModelTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'unit'</span><span class="keyword">]</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'unit'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">:</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 115 - 0
tests/codeCoverage/CarType.php.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\CarType.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">CarType.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="">Total</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+      <tr>
+       <td class=""><abbr title="App\CarType">CarType</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small">0</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">CarType</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="keyword">,</span><span class="default">'model'</span><span class="keyword">,</span><span class="default">'length'</span><span class="keyword">,</span><span class="default">'load'</span><span class="keyword">,</span><span class="default">'remark'</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 115 - 0
tests/codeCoverage/Carrier.php.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Carrier.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">Carrier.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="">Total</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+      <tr>
+       <td class=""><abbr title="App\Carrier">Carrier</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small">0</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Carrier</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="keyword">,</span><span class="default">'mobile'</span><span class="keyword">,</span><span class="default">'remark'</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 199 - 0
tests/codeCoverage/City.php.html

@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\City.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">City.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="success">Total</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="success"><abbr title="App\City">City</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success small">3</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#17"><abbr title="province()">province</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#21"><abbr title="getProvinceNameAttribute()">getProvinceNameAttribute</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">City</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'province_id'</span><span class="keyword">,</span><span class="default">'name'</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$appends</span><span class="keyword">=</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'province_name'</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">province</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 18" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\CityTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\CityTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsTo</span><span class="keyword">(</span><span class="default">'App\Province'</span><span class="keyword">,</span><span class="default">'province_id'</span><span class="keyword">,</span><span class="default">'id'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getProvinceNameAttribute</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="2 tests cover line 22" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\CityTest::testIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\CityTest::testDestroy&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'province'</span><span class="keyword">]</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">[</span><span class="default">'province'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">:</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 112 - 0
tests/codeCoverage/Commodity.php.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Commodity.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href=".css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href=".css/octicons.css" rel="stylesheet" type="text/css">
+  <link href=".css/style.css" rel="stylesheet" type="text/css">
+  <link href=".css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">Commodity.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="">Total</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+      <tr>
+       <td class=""><abbr title="App\Commodity">Commodity</abbr></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+       <td class=" small">0</td>
+       <td class=" big"></td>
+       <td class=" small"><div align="right">n/a</div></td>
+       <td class=" small"><div align="right">0&nbsp;/&nbsp;0</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Commodity</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="keyword">=</span><span class="keyword">[</span><span class="default">'barcode'</span><span class="keyword">,</span><span class="default">'name'</span><span class="keyword">,</span><span class="default">'sku'</span><span class="keyword">,</span><span class="default">'owner_name'</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src=".js/jquery.min.js" type="text/javascript"></script>
+  <script src=".js/popper.min.js" type="text/javascript"></script>
+  <script src=".js/bootstrap.min.js" type="text/javascript"></script>
+  <script src=".js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 218 - 0
tests/codeCoverage/Console/Commands/RedisSubscribe.php.html

@@ -0,0 +1,218 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Console\Commands\RedisSubscribe.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Console</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Commands</a></li>
+         <li class="breadcrumb-item active">RedisSubscribe.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="66.67" aria-valuemin="0" aria-valuemax="100" style="width: 66.67%">
+           <span class="sr-only">66.67% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">66.67%</div></td>
+       <td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Console\Commands\RedisSubscribe">RedisSubscribe</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger small">2.15</td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="66.67" aria-valuemin="0" aria-valuemax="100" style="width: 66.67%">
+           <span class="sr-only">66.67% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">66.67%</div></td>
+       <td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#29"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#39"><abbr title="handle()">handle</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Console</span><span class="default">\</span><span class="default">Commands</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Console</span><span class="default">\</span><span class="default">Command</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Redis</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">RedisSubscribe</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Command</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;name&nbsp;and&nbsp;signature&nbsp;of&nbsp;the&nbsp;console&nbsp;command.</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$signature</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'redis:subscribe'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;console&nbsp;command&nbsp;description.</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$description</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'Subscribe&nbsp;to&nbsp;a&nbsp;Redis&nbsp;channel'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;command&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 31" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Feature\WaybillsTest::testAddWaybill&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">parent</span><span class="default">::</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 32" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Feature\WaybillsTest::testAddWaybill&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Execute&nbsp;the&nbsp;console&nbsp;command.</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;mixed</span></td></tr>
+     <tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">handle</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 287 - 0
tests/codeCoverage/Console/Commands/dashboard.html

@@ -0,0 +1,287 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Dashboard for D:\Demo\bswas\app\Console\Commands</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/nv.d3.min.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Console</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Commands</a></li>
+         <li class="breadcrumb-item active">(Dashboard)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Classes</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="classCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="classComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="RedisSubscribe.php.html#8">App\Console\Commands\RedisSubscribe</a></td><td class="text-right">66%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Methods</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="methodCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="methodComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="RedisSubscribe.php.html#39"><abbr title="App\Console\Commands\RedisSubscribe::handle">handle</abbr></a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <footer>
+    <hr/>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+  <script src="../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../.js/d3.min.js" type="text/javascript"></script>
+  <script src="../../.js/nv.d3.min.js" type="text/javascript"></script>
+  <script type="text/javascript">
+$(document).ready(function() {
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#classCoverageDistribution svg')
+      .datum(getCoverageDistributionData([0,0,0,0,0,0,0,1,0,0,0,0], "Class Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#methodCoverageDistribution svg')
+      .datum(getCoverageDistributionData([1,0,0,0,0,0,0,0,0,0,0,1], "Method Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getCoverageDistributionData(data, label) {
+    var labels = [
+      '0%',
+      '0-10%',
+      '10-20%',
+      '20-30%',
+      '30-40%',
+      '40-50%',
+      '50-60%',
+      '60-70%',
+      '70-80%',
+      '80-90%',
+      '90-100%',
+      '100%'
+    ];
+    var values = [];
+    $.each(labels, function(key) {
+      values.push({x: labels[key], y: data[key]});
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+    d3.select('#classComplexity svg')
+      .datum(getComplexityData([[66.66666666666666,2,"<a href=\"RedisSubscribe.php.html#8\">App\\Console\\Commands\\RedisSubscribe<\/a>"]], 'Class Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Method Complexity');
+
+    d3.select('#methodComplexity svg')
+      .datum(getComplexityData([[100,1,"<a href=\"RedisSubscribe.php.html#29\">App\\Console\\Commands\\RedisSubscribe::__construct<\/a>"],[0,1,"<a href=\"RedisSubscribe.php.html#39\">App\\Console\\Commands\\RedisSubscribe::handle<\/a>"]], 'Method Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getComplexityData(data, label) {
+    var values = [];
+    $.each(data, function(key) {
+      var value = Math.round(data[key][0]*100) / 100;
+      values.push({
+        x: value,
+        y: data[key][1],
+        class: data[key][2],
+        size: 0.05,
+        shape: 'diamond'
+      });
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+});
+  </script>
+ </body>
+</html>

+ 120 - 0
tests/codeCoverage/Console/Commands/index.html

@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Console\Commands</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Console</a></li>
+         <li class="breadcrumb-item active">Commands</li>
+         <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="warning">Total</td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="66.67" aria-valuemin="0" aria-valuemax="100" style="width: 66.67%">
+           <span class="sr-only">66.67% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">66.67%</div></td>
+       <td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="warning"><img src="../../.icons/file-code.svg" class="octicon" /><a href="RedisSubscribe.php.html">RedisSubscribe.php</a></td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="66.67" aria-valuemin="0" aria-valuemax="100" style="width: 66.67%">
+           <span class="sr-only">66.67% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">66.67%</div></td>
+       <td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="danger"><strong>Low</strong>: 0% to 50%</span>
+     <span class="warning"><strong>Medium</strong>: 50% to 90%</span>
+     <span class="success"><strong>High</strong>: 90% to 100%</span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+ </body>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 178 - 0
tests/codeCoverage/Console/Kernel.php.html


+ 286 - 0
tests/codeCoverage/Console/dashboard.html

@@ -0,0 +1,286 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Dashboard for D:\Demo\bswas\app\Console</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/nv.d3.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Console</a></li>
+         <li class="breadcrumb-item active">(Dashboard)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Classes</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="classCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="classComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="Commands/RedisSubscribe.php.html#8">App\Console\Commands\RedisSubscribe</a></td><td class="text-right">66%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Methods</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="methodCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="methodComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="Commands/RedisSubscribe.php.html#39"><abbr title="App\Console\Commands\RedisSubscribe::handle">handle</abbr></a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <footer>
+    <hr/>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/d3.min.js" type="text/javascript"></script>
+  <script src="../.js/nv.d3.min.js" type="text/javascript"></script>
+  <script type="text/javascript">
+$(document).ready(function() {
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#classCoverageDistribution svg')
+      .datum(getCoverageDistributionData([0,0,0,0,0,0,0,1,0,0,0,1], "Class Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#methodCoverageDistribution svg')
+      .datum(getCoverageDistributionData([1,0,0,0,0,0,0,0,0,0,0,3], "Method Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getCoverageDistributionData(data, label) {
+    var labels = [
+      '0%',
+      '0-10%',
+      '10-20%',
+      '20-30%',
+      '30-40%',
+      '40-50%',
+      '50-60%',
+      '60-70%',
+      '70-80%',
+      '80-90%',
+      '90-100%',
+      '100%'
+    ];
+    var values = [];
+    $.each(labels, function(key) {
+      values.push({x: labels[key], y: data[key]});
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+    d3.select('#classComplexity svg')
+      .datum(getComplexityData([[66.66666666666666,2,"<a href=\"Commands\/RedisSubscribe.php.html#8\">App\\Console\\Commands\\RedisSubscribe<\/a>"],[100,2,"<a href=\"Kernel.php.html#8\">App\\Console\\Kernel<\/a>"]], 'Class Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Method Complexity');
+
+    d3.select('#methodComplexity svg')
+      .datum(getComplexityData([[100,1,"<a href=\"Commands\/RedisSubscribe.php.html#29\">App\\Console\\Commands\\RedisSubscribe::__construct<\/a>"],[0,1,"<a href=\"Commands\/RedisSubscribe.php.html#39\">App\\Console\\Commands\\RedisSubscribe::handle<\/a>"],[100,1,"<a href=\"Kernel.php.html#25\">App\\Console\\Kernel::schedule<\/a>"],[100,1,"<a href=\"Kernel.php.html#36\">App\\Console\\Kernel::commands<\/a>"]], 'Method Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getComplexityData(data, label) {
+    var values = [];
+    $.each(data, function(key) {
+      var value = Math.round(data[key][0]*100) / 100;
+      values.push({
+        x: value,
+        y: data[key][1],
+        class: data[key][2],
+        size: 0.05,
+        shape: 'diamond'
+      });
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+});
+  </script>
+ </body>
+</html>

+ 147 - 0
tests/codeCoverage/Console/index.html

@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Console</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">Console</li>
+         <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="warning">Total</td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="85.71" aria-valuemin="0" aria-valuemax="100" style="width: 85.71%">
+           <span class="sr-only">85.71% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">85.71%</div></td>
+       <td class="warning small"><div align="right">6&nbsp;/&nbsp;7</div></td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="75.00" aria-valuemin="0" aria-valuemax="100" style="width: 75.00%">
+           <span class="sr-only">75.00% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">75.00%</div></td>
+       <td class="warning small"><div align="right">3&nbsp;/&nbsp;4</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="warning"><img src="../.icons/file-directory.svg" class="octicon" /><a href="Commands/index.html">Commands</a></td>
+       <td class="warning big">       <div class="progress">
+         <div class="progress-bar bg-warning" role="progressbar" aria-valuenow="66.67" aria-valuemin="0" aria-valuemax="100" style="width: 66.67%">
+           <span class="sr-only">66.67% covered (warning)</span>
+         </div>
+       </div>
+</td>
+       <td class="warning small"><div align="right">66.67%</div></td>
+       <td class="warning small"><div align="right">2&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="50.00" aria-valuemin="0" aria-valuemax="100" style="width: 50.00%">
+           <span class="sr-only">50.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">50.00%</div></td>
+       <td class="danger small"><div align="right">1&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success"><img src="../.icons/file-code.svg" class="octicon" /><a href="Kernel.php.html">Kernel.php</a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">4&nbsp;/&nbsp;4</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="danger"><strong>Low</strong>: 0% to 50%</span>
+     <span class="warning"><strong>Medium</strong>: 50% to 90%</span>
+     <span class="success"><strong>High</strong>: 90% to 100%</span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+ </body>
+</html>

+ 226 - 0
tests/codeCoverage/Exceptions/Handler.php.html

@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exceptions\Handler.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exceptions</a></li>
+         <li class="breadcrumb-item active">Handler.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="success">Total</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">3&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="success"><abbr title="App\Exceptions\Handler">Handler</abbr></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success small">2</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">3&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#35"><abbr title="report(Exception $exception)">report</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="success" colspan="4">&nbsp;<a href="#47"><abbr title="render($request, Exception $exception)">render</abbr></a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+       <td class="success small">1</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exceptions</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Exception</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Exceptions</span><span class="default">\</span><span class="default">Handler</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">ExceptionHandler</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Handler</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">ExceptionHandler</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;list&nbsp;of&nbsp;the&nbsp;exception&nbsp;types&nbsp;that&nbsp;are&nbsp;not&nbsp;reported.</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$dontReport</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;list&nbsp;of&nbsp;the&nbsp;inputs&nbsp;that&nbsp;are&nbsp;never&nbsp;flashed&nbsp;for&nbsp;validation&nbsp;exceptions.</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$dontFlash</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password_confirmation'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Report&nbsp;or&nbsp;log&nbsp;an&nbsp;exception.</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Exception&nbsp;&nbsp;$exception</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">report</span><span class="keyword">(</span><span class="default">Exception</span><span class="default">&nbsp;</span><span class="default">$exception</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 37" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillTest::testUpdate&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">parent</span><span class="default">::</span><span class="default">report</span><span class="keyword">(</span><span class="default">$exception</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 38" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillTest::testUpdate&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Render&nbsp;an&nbsp;exception&nbsp;into&nbsp;an&nbsp;HTTP&nbsp;response.</span></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Illuminate\Http\Request&nbsp;&nbsp;$request</span></td></tr>
+     <tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Exception&nbsp;&nbsp;$exception</span></td></tr>
+     <tr><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Http\Response</span></td></tr>
+     <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">render</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">Exception</span><span class="default">&nbsp;</span><span class="default">$exception</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="covered-by-large-tests popin" data-title="1 test covers line 49" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Unit\WaybillTest::testUpdate&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">parent</span><span class="default">::</span><span class="default">render</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$exception</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 284 - 0
tests/codeCoverage/Exceptions/dashboard.html

@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Dashboard for D:\Demo\bswas\app\Exceptions</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/nv.d3.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exceptions</a></li>
+         <li class="breadcrumb-item active">(Dashboard)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Classes</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="classCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="classComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Methods</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="methodCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="methodComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <footer>
+    <hr/>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/d3.min.js" type="text/javascript"></script>
+  <script src="../.js/nv.d3.min.js" type="text/javascript"></script>
+  <script type="text/javascript">
+$(document).ready(function() {
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#classCoverageDistribution svg')
+      .datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,1], "Class Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#methodCoverageDistribution svg')
+      .datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,2], "Method Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getCoverageDistributionData(data, label) {
+    var labels = [
+      '0%',
+      '0-10%',
+      '10-20%',
+      '20-30%',
+      '30-40%',
+      '40-50%',
+      '50-60%',
+      '60-70%',
+      '70-80%',
+      '80-90%',
+      '90-100%',
+      '100%'
+    ];
+    var values = [];
+    $.each(labels, function(key) {
+      values.push({x: labels[key], y: data[key]});
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+    d3.select('#classComplexity svg')
+      .datum(getComplexityData([[100,2,"<a href=\"Handler.php.html#8\">App\\Exceptions\\Handler<\/a>"]], 'Class Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Method Complexity');
+
+    d3.select('#methodComplexity svg')
+      .datum(getComplexityData([[100,1,"<a href=\"Handler.php.html#35\">App\\Exceptions\\Handler::report<\/a>"],[100,1,"<a href=\"Handler.php.html#47\">App\\Exceptions\\Handler::render<\/a>"]], 'Method Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getComplexityData(data, label) {
+    var values = [];
+    $.each(data, function(key) {
+      var value = Math.round(data[key][0]*100) / 100;
+      values.push({
+        x: value,
+        y: data[key][1],
+        class: data[key][2],
+        size: 0.05,
+        shape: 'diamond'
+      });
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+});
+  </script>
+ </body>
+</html>

+ 119 - 0
tests/codeCoverage/Exceptions/index.html

@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exceptions</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">Exceptions</li>
+         <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="success">Total</td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">3&nbsp;/&nbsp;3</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="success"><img src="../.icons/file-code.svg" class="octicon" /><a href="Handler.php.html">Handler.php</a></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">3&nbsp;/&nbsp;3</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
+       <td class="success big">       <div class="progress">
+         <div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
+           <span class="sr-only">100.00% covered (success)</span>
+         </div>
+       </div>
+</td>
+       <td class="success small"><div align="right">100.00%</div></td>
+       <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="danger"><strong>Low</strong>: 0% to 50%</span>
+     <span class="warning"><strong>Medium</strong>: 50% to 90%</span>
+     <span class="success"><strong>High</strong>: 90% to 100%</span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+ </body>
+</html>

+ 199 - 0
tests/codeCoverage/Exports/GoodsNeateningExcelExport.php.html

@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exports\GoodsNeateningExcelExport.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exports</a></li>
+         <li class="breadcrumb-item active">GoodsNeateningExcelExport.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Exports\GoodsNeateningExcelExport">GoodsNeateningExcelExport</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#12"><abbr title="__construct($data)">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#20"><abbr title="collection()">collection</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exports</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">User</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Collection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">FromCollection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">GoodsNeateningExcelExport</span><span class="default">&nbsp;</span><span class="keyword">implements</span><span class="default">&nbsp;</span><span class="default">FromCollection</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">data</span><span class="keyword">=</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">Collection</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Support\Collection</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">collection</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">data</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 403 - 0
tests/codeCoverage/Exports/RejectedExport.php.html

@@ -0,0 +1,403 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exports\RejectedExport.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exports</a></li>
+         <li class="breadcrumb-item active">RejectedExport.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;46</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Exports\RejectedExport">RejectedExport</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
+       <td class="danger small">132.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;46</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#21"><abbr title="setIds(Array $ids)">setIds</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#25"><abbr title="setRejectedBills($rejectedBills)">setRejectedBills</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#29"><abbr title="collection()">collection</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">12.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#39"><abbr title="getByIds()">getByIds</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;10</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#54"><abbr title="getByRejectedBills()">getByRejectedBills</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;6</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#64"><abbr title="prependFields($collection)">prependFields</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#71"><abbr title="injectRecord($collection,$bill,$item)">injectRecord</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;10</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#88"><abbr title="columnFormats(): array">columnFormats</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;9</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exports</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">RejectedBill</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">RejectedBillItem</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Builder</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Collection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">FromCollection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">ShouldAutoSize</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">WithColumnFormatting</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">WithCustomValueBinder</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">PhpOffice</span><span class="default">\</span><span class="default">PhpSpreadsheet</span><span class="default">\</span><span class="default">Style</span><span class="default">\</span><span class="default">NumberFormat</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">RejectedExport</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">PhpOffice</span><span class="default">\</span><span class="default">PhpSpreadsheet</span><span class="default">\</span><span class="default">Cell</span><span class="default">\</span><span class="default">StringValueBinder</span><span class="default">&nbsp;</span><span class="keyword">implements</span><span class="default">&nbsp;</span><span class="default">FromCollection</span><span class="keyword">,</span><span class="default">ShouldAutoSize</span><span class="keyword">,</span><span class="default">WithColumnFormatting</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="keyword">,</span><span class="default">WithCustomValueBinder</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$ids</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span class="default">&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="default">$max</span><span class="keyword">=</span><span class="default">10000</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$rejectedBills</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">setIds</span><span class="keyword">(</span><span class="keyword">Array</span><span class="default">&nbsp;</span><span class="default">$ids</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">ids</span><span class="keyword">=</span><span class="default">$ids</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">setRejectedBills</span><span class="keyword">(</span><span class="default">$rejectedBills</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rejectedBills</span><span class="keyword">=</span><span class="default">$rejectedBills</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">collection</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">ids</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getByIds</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rejectedBills</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getByRejectedBills</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">null</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getByIds</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejectedItems</span><span class="keyword">=</span><span class="default">RejectedBillItem</span><span class="default">::</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'rejectedBill'</span><span class="keyword">,</span><span class="keyword">function</span><span class="keyword">(</span><span class="default">Builder</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">whereIn</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">ids</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">count</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">ids</span><span class="keyword">)</span><span class="keyword">&gt;</span><span class="default">self</span><span class="default">::</span><span class="default">$max</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'is_finished'</span><span class="keyword">,</span><span class="default">false</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejectedItems</span><span class="default">-&gt;</span><span class="default">get</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejecteds</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">Collection</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">prependFields</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejectedItems</span><span class="default">-&gt;</span><span class="default">each</span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="default">RejectedBillItem</span><span class="default">&nbsp;</span><span class="default">$item</span><span class="keyword">)</span><span class="keyword">use</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">injectRecord</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">,</span><span class="default">$item</span><span class="default">-&gt;</span><span class="default">rejectedBill</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$rejecteds</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getByRejectedBills</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejecteds</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">Collection</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">prependFields</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rejectedBills</span><span class="default">-&gt;</span><span class="default">each</span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="default">RejectedBill</span><span class="default">&nbsp;</span><span class="default">$rejectedBill</span><span class="keyword">)</span><span class="keyword">use</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rejectedBill</span><span class="default">-&gt;</span><span class="default">items</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">each</span><span class="keyword">(</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">RejectedBillItem</span><span class="default">&nbsp;</span><span class="default">$item</span><span class="keyword">)</span><span class="keyword">use</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">,</span><span class="default">$rejectedBill</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">injectRecord</span><span class="keyword">(</span><span class="default">$rejecteds</span><span class="keyword">,</span><span class="default">$rejectedBill</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$rejecteds</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">prependFields</span><span class="keyword">(</span><span class="default">$collection</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$collection</span><span class="default">-&gt;</span><span class="default">prepend</span><span class="keyword">(</span><span class="keyword">[</span><span class="default">'日期'</span><span class="keyword">,</span><span class="default">'审核号'</span><span class="keyword">,</span><span class="default">'客户名称'</span><span class="keyword">,</span><span class="default">'订单号'</span><span class="keyword">,</span><span class="default">'姓名'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'手机'</span><span class="keyword">,</span><span class="default">'原单单号'</span><span class="keyword">,</span><span class="default">'退回单号'</span><span class="keyword">,</span><span class="default">'退回公司'</span><span class="keyword">,</span><span class="default">'到付费用'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'是否入库'</span><span class="keyword">,</span><span class="default">'商品条码'</span><span class="keyword">,</span><span class="default">'商品名称'</span><span class="keyword">,</span><span class="default">'数量'</span><span class="keyword">,</span><span class="default">'是否正品'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'批次号'</span><span class="keyword">,</span><span class="default">'生产日期'</span><span class="keyword">,</span><span class="default">'效期'</span><span class="keyword">,</span><span class="default">'备注'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$collection</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">injectRecord</span><span class="keyword">(</span><span class="default">$collection</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$collection</span><span class="default">-&gt;</span><span class="default">push</span><span class="keyword">(</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'created_at'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'checked_numbers'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'owner_name'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'order_number'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'sender'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'mobile_sender'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'logistic_number'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'logistic_number_return'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'logistic_name'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'fee_collected'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$bill</span><span class="keyword">[</span><span class="default">'is_loaded_str'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="79"></a><a href="#79">79</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'barcode_goods'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'name_goods'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'amount'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'quality_label'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="80"></a><a href="#80">80</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'batch_number'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'made_at'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'validity_at'</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">$item</span><span class="keyword">[</span><span class="default">'remark'</span><span class="keyword">]</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="81"></a><a href="#81">81</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$collection</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="82"></a><a href="#82">82</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="83"></a><a href="#83">83</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="84"></a><a href="#84">84</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="85"></a><a href="#85">85</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="86"></a><a href="#86">86</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array</span></td></tr>
+     <tr><td><div align="right"><a name="87"></a><a href="#87">87</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="88"></a><a href="#88">88</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">columnFormats</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">array</span></td></tr>
+     <tr><td><div align="right"><a name="89"></a><a href="#89">89</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="90"></a><a href="#90">90</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="91"></a><a href="#91">91</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'B'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="92"></a><a href="#92">92</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'C'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="93"></a><a href="#93">93</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'D'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="94"></a><a href="#94">94</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'E'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="95"></a><a href="#95">95</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'F'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="96"></a><a href="#96">96</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'G'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="97"></a><a href="#97">97</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'H'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="98"></a><a href="#98">98</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'L'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="99"></a><a href="#99">99</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'N'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="100"></a><a href="#100">100</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="101"></a><a href="#101">101</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="102"></a><a href="#102">102</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 171 - 0
tests/codeCoverage/Exports/UserExport.php.html

@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exports\UserExport.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exports</a></li>
+         <li class="breadcrumb-item active">UserExport.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Exports\UserExport">UserExport</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#13"><abbr title="collection()">collection</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exports</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">User</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">FromCollection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">UserExport</span><span class="default">&nbsp;</span><span class="keyword">implements</span><span class="default">&nbsp;</span><span class="default">FromCollection</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Support\Collection</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">collection</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">User</span><span class="default">::</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 253 - 0
tests/codeCoverage/Exports/WaybillExport.php.html

@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exports\WaybillExport.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exports</a></li>
+         <li class="breadcrumb-item active">WaybillExport.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;24</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Exports\WaybillExport">WaybillExport</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger small">42.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;24</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#15"><abbr title="__construct($row,$data)">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#21"><abbr title="collection()">collection</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">20.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;11</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#42"><abbr title="columnFormats(): array">columnFormats</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;10</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exports</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">FromCollection</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">ShouldAutoSize</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">WithColumnFormatting</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Maatwebsite</span><span class="default">\</span><span class="default">Excel</span><span class="default">\</span><span class="default">Concerns</span><span class="default">\</span><span class="default">WithCustomValueBinder</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">PhpOffice</span><span class="default">\</span><span class="default">PhpSpreadsheet</span><span class="default">\</span><span class="default">Cell</span><span class="default">\</span><span class="default">StringValueBinder</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">PhpOffice</span><span class="default">\</span><span class="default">PhpSpreadsheet</span><span class="default">\</span><span class="default">Style</span><span class="default">\</span><span class="default">NumberFormat</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">WaybillExport</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">StringValueBinder</span><span class="default">&nbsp;</span><span class="keyword">implements</span><span class="default">&nbsp;</span><span class="default">FromCollection</span><span class="keyword">,</span><span class="default">ShouldAutoSize</span><span class="keyword">,</span><span class="default">WithColumnFormatting</span><span class="keyword">,</span><span class="default">WithCustomValueBinder</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$row</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="default">$row</span><span class="keyword">,</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">row</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$row</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">data</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">collection</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$row</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">row</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$data</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">data</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">//设置表头</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$row</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$key</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">$value</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$key_arr</span><span class="keyword">[</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$key</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">//输入数据</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$data</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$key</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">&amp;</span><span class="default">$value</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$js</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">for</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$i</span><span class="keyword">=</span><span class="default">0</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="keyword">&lt;</span><span class="default">&nbsp;</span><span class="default">count</span><span class="keyword">(</span><span class="default">$key_arr</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="default">++</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$js</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">array_merge</span><span class="keyword">(</span><span class="default">$js</span><span class="keyword">,</span><span class="keyword">[</span><span class="default">&nbsp;</span><span class="default">$key_arr</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">$value</span><span class="keyword">[</span><span class="default">&nbsp;</span><span class="default">$key_arr</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">array_push</span><span class="keyword">(</span><span class="default">$row</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$js</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">unset</span><span class="keyword">(</span><span class="default">$val</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">collect</span><span class="keyword">(</span><span class="default">$row</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">columnFormats</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">array</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'D'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'H'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'I'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'L'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'O'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'Q'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'S'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'T'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'U'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'V'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">NumberFormat</span><span class="default">::</span><span class="default">FORMAT_TEXT</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 307 - 0
tests/codeCoverage/Exports/dashboard.html

@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Dashboard for D:\Demo\bswas\app\Exports</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/nv.d3.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Exports</a></li>
+         <li class="breadcrumb-item active">(Dashboard)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Classes</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="classCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="classComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="GoodsNeateningExcelExport.php.html#9">App\Exports\GoodsNeateningExcelExport</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#15">App\Exports\RejectedExport</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="UserExport.php.html#8">App\Exports\UserExport</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="WaybillExport.php.html#10">App\Exports\WaybillExport</a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="RejectedExport.php.html#15">App\Exports\RejectedExport</a></td><td class="text-right">132</td></tr>
+       <tr><td><a href="WaybillExport.php.html#10">App\Exports\WaybillExport</a></td><td class="text-right">42</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Methods</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="methodCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="methodComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="GoodsNeateningExcelExport.php.html#12"><abbr title="App\Exports\GoodsNeateningExcelExport::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="GoodsNeateningExcelExport.php.html#20"><abbr title="App\Exports\GoodsNeateningExcelExport::collection">collection</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#21"><abbr title="App\Exports\RejectedExport::setIds">setIds</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#25"><abbr title="App\Exports\RejectedExport::setRejectedBills">setRejectedBills</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#29"><abbr title="App\Exports\RejectedExport::collection">collection</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#39"><abbr title="App\Exports\RejectedExport::getByIds">getByIds</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#54"><abbr title="App\Exports\RejectedExport::getByRejectedBills">getByRejectedBills</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#64"><abbr title="App\Exports\RejectedExport::prependFields">prependFields</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#71"><abbr title="App\Exports\RejectedExport::injectRecord">injectRecord</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RejectedExport.php.html#88"><abbr title="App\Exports\RejectedExport::columnFormats">columnFormats</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="UserExport.php.html#13"><abbr title="App\Exports\UserExport::collection">collection</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="WaybillExport.php.html#15"><abbr title="App\Exports\WaybillExport::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="WaybillExport.php.html#21"><abbr title="App\Exports\WaybillExport::collection">collection</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="WaybillExport.php.html#42"><abbr title="App\Exports\WaybillExport::columnFormats">columnFormats</abbr></a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="WaybillExport.php.html#21"><abbr title="App\Exports\WaybillExport::collection">collection</abbr></a></td><td class="text-right">20</td></tr>
+       <tr><td><a href="RejectedExport.php.html#29"><abbr title="App\Exports\RejectedExport::collection">collection</abbr></a></td><td class="text-right">12</td></tr>
+       <tr><td><a href="RejectedExport.php.html#39"><abbr title="App\Exports\RejectedExport::getByIds">getByIds</abbr></a></td><td class="text-right">6</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <footer>
+    <hr/>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+  <script src="../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../.js/d3.min.js" type="text/javascript"></script>
+  <script src="../.js/nv.d3.min.js" type="text/javascript"></script>
+  <script type="text/javascript">
+$(document).ready(function() {
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#classCoverageDistribution svg')
+      .datum(getCoverageDistributionData([4,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#methodCoverageDistribution svg')
+      .datum(getCoverageDistributionData([14,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getCoverageDistributionData(data, label) {
+    var labels = [
+      '0%',
+      '0-10%',
+      '10-20%',
+      '20-30%',
+      '30-40%',
+      '40-50%',
+      '50-60%',
+      '60-70%',
+      '70-80%',
+      '80-90%',
+      '90-100%',
+      '100%'
+    ];
+    var values = [];
+    $.each(labels, function(key) {
+      values.push({x: labels[key], y: data[key]});
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+    d3.select('#classComplexity svg')
+      .datum(getComplexityData([[0,2,"<a href=\"GoodsNeateningExcelExport.php.html#9\">App\\Exports\\GoodsNeateningExcelExport<\/a>"],[0,11,"<a href=\"RejectedExport.php.html#15\">App\\Exports\\RejectedExport<\/a>"],[0,1,"<a href=\"UserExport.php.html#8\">App\\Exports\\UserExport<\/a>"],[0,6,"<a href=\"WaybillExport.php.html#10\">App\\Exports\\WaybillExport<\/a>"]], 'Class Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Method Complexity');
+
+    d3.select('#methodComplexity svg')
+      .datum(getComplexityData([[0,1,"<a href=\"GoodsNeateningExcelExport.php.html#12\">App\\Exports\\GoodsNeateningExcelExport::__construct<\/a>"],[0,1,"<a href=\"GoodsNeateningExcelExport.php.html#20\">App\\Exports\\GoodsNeateningExcelExport::collection<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#21\">App\\Exports\\RejectedExport::setIds<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#25\">App\\Exports\\RejectedExport::setRejectedBills<\/a>"],[0,3,"<a href=\"RejectedExport.php.html#29\">App\\Exports\\RejectedExport::collection<\/a>"],[0,2,"<a href=\"RejectedExport.php.html#39\">App\\Exports\\RejectedExport::getByIds<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#54\">App\\Exports\\RejectedExport::getByRejectedBills<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#64\">App\\Exports\\RejectedExport::prependFields<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#71\">App\\Exports\\RejectedExport::injectRecord<\/a>"],[0,1,"<a href=\"RejectedExport.php.html#88\">App\\Exports\\RejectedExport::columnFormats<\/a>"],[0,1,"<a href=\"UserExport.php.html#13\">App\\Exports\\UserExport::collection<\/a>"],[0,1,"<a href=\"WaybillExport.php.html#15\">App\\Exports\\WaybillExport::__construct<\/a>"],[0,4,"<a href=\"WaybillExport.php.html#21\">App\\Exports\\WaybillExport::collection<\/a>"],[0,1,"<a href=\"WaybillExport.php.html#42\">App\\Exports\\WaybillExport::columnFormats<\/a>"]], 'Method Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getComplexityData(data, label) {
+    var values = [];
+    $.each(data, function(key) {
+      var value = Math.round(data[key][0]*100) / 100;
+      values.push({
+        x: value,
+        y: data[key][1],
+        class: data[key][2],
+        size: 0.05,
+        shape: 'diamond'
+      });
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+});
+  </script>
+ </body>
+</html>

+ 203 - 0
tests/codeCoverage/Exports/index.html

@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Exports</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item active">Exports</li>
+         <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;74</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;14</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../.icons/file-code.svg" class="octicon" /><a href="GoodsNeateningExcelExport.php.html">GoodsNeateningExcelExport.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../.icons/file-code.svg" class="octicon" /><a href="RejectedExport.php.html">RejectedExport.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;46</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../.icons/file-code.svg" class="octicon" /><a href="UserExport.php.html">UserExport.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../.icons/file-code.svg" class="octicon" /><a href="WaybillExport.php.html">WaybillExport.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;24</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="danger"><strong>Low</strong>: 0% to 50%</span>
+     <span class="warning"><strong>Medium</strong>: 50% to 90%</span>
+     <span class="success"><strong>High</strong>: 90% to 100%</span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+ </body>
+</html>

+ 188 - 0
tests/codeCoverage/Http/Controllers/Auth/ForgotPasswordController.php.html

@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\ForgotPasswordController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">ForgotPasswordController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\ForgotPasswordController">ForgotPasswordController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#28"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">SendsPasswordResetEmails</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">ForgotPasswordController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Password&nbsp;Reset&nbsp;Controller</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;This&nbsp;controller&nbsp;is&nbsp;responsible&nbsp;for&nbsp;handling&nbsp;password&nbsp;reset&nbsp;emails&nbsp;and</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;includes&nbsp;a&nbsp;trait&nbsp;which&nbsp;assists&nbsp;in&nbsp;sending&nbsp;these&nbsp;notifications&nbsp;from</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;your&nbsp;application&nbsp;to&nbsp;your&nbsp;users.&nbsp;Feel&nbsp;free&nbsp;to&nbsp;explore&nbsp;this&nbsp;trait.</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">SendsPasswordResetEmails</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'guest'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 276 - 0
tests/codeCoverage/Http/Controllers/Auth/LoginController.php.html

@@ -0,0 +1,276 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\LoginController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">LoginController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;14</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\LoginController">LoginController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger small">42.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;14</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#41"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#45"><abbr title="username()">username</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#58"><abbr title="login(Request $request)">login</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">20.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;11</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">AuthenticatesUsers</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">JsonResponse</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">RedirectResponse</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Request</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Response</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Validation</span><span class="default">\</span><span class="default">ValidationException</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">LoginController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Login&nbsp;Controller</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;This&nbsp;controller&nbsp;handles&nbsp;authenticating&nbsp;users&nbsp;for&nbsp;the&nbsp;application&nbsp;and</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;redirecting&nbsp;them&nbsp;to&nbsp;your&nbsp;home&nbsp;screen.&nbsp;The&nbsp;controller&nbsp;uses&nbsp;a&nbsp;trait</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;to&nbsp;conveniently&nbsp;provide&nbsp;its&nbsp;functionality&nbsp;to&nbsp;your&nbsp;applications.</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">AuthenticatesUsers</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Where&nbsp;to&nbsp;redirect&nbsp;users&nbsp;after&nbsp;login.</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$redirectTo</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'/rejected'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'guest'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">except</span><span class="keyword">(</span><span class="default">'logout'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">username</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">'name'</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Handle&nbsp;a&nbsp;login&nbsp;request&nbsp;to&nbsp;the&nbsp;application.</span></td></tr>
+     <tr><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Request&nbsp;$request</span></td></tr>
+     <tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ValidationException</span></td></tr>
+     <tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">login</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">validateLogin</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">method_exists</span><span class="keyword">(</span><span class="default">$this</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'hasTooManyLoginAttempts'</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="default">&amp;&amp;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">hasTooManyLoginAttempts</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">fireLockoutEvent</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">sendLockoutResponse</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">attemptLogin</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">''</span><span class="keyword">,</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">sendLoginResponse</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">incrementLoginAttempts</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">''</span><span class="keyword">,</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">sendFailedLoginResponse</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 314 - 0
tests/codeCoverage/Http/Controllers/Auth/PasswordController.php.html

@@ -0,0 +1,314 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\PasswordController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">PasswordController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;17</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\PasswordController">PasswordController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+       <td class="danger small">42.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;17</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#29"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#33"><abbr title="change()">change</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#37"><abbr title="update(Request $request)">update</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;8</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#48"><abbr title="rules()">rules</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#65"><abbr title="validationErrorMessages()">validationErrorMessages</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">Events</span><span class="default">\</span><span class="default">PasswordReset</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">ResetsPasswords</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Request</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Hash</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Str</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">PasswordController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Where&nbsp;to&nbsp;redirect&nbsp;users&nbsp;after&nbsp;resetting&nbsp;their&nbsp;password.</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$redirectTo</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'/home'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'auth'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">change</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">view</span><span class="keyword">(</span><span class="default">'auth.passwords.change'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">update</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$user</span><span class="keyword">=</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">validate</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rules</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">validationErrorMessages</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$user</span><span class="default">-&gt;</span><span class="default">password</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">Hash</span><span class="default">::</span><span class="default">make</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'password'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$user</span><span class="default">-&gt;</span><span class="default">setRememberToken</span><span class="keyword">(</span><span class="default">Str</span><span class="default">::</span><span class="default">random</span><span class="keyword">(</span><span class="default">60</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$user</span><span class="default">-&gt;</span><span class="default">save</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">event</span><span class="keyword">(</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">PasswordReset</span><span class="keyword">(</span><span class="default">$user</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">Auth</span><span class="default">::</span><span class="default">guard</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">login</span><span class="keyword">(</span><span class="default">$user</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">view</span><span class="keyword">(</span><span class="default">'auth.passwords.changed'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">rules</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'old_password'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'required'</span><span class="keyword">,</span><span class="keyword">function</span><span class="keyword">(</span><span class="default">$attr</span><span class="keyword">,</span><span class="default">$val</span><span class="keyword">,</span><span class="default">$fail</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$oldPwd</span><span class="keyword">=</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'password'</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Hash</span><span class="default">::</span><span class="default">check</span><span class="keyword">(</span><span class="default">$val</span><span class="keyword">,</span><span class="default">$oldPwd</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$fail</span><span class="keyword">(</span><span class="default">'旧密码输入不匹配'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">'required|confirmed|min:8'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;password&nbsp;reset&nbsp;validation&nbsp;error&nbsp;messages.</span></td></tr>
+     <tr><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array</span></td></tr>
+     <tr><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">validationErrorMessages</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'old_password.required'</span><span class="default">=&gt;</span><span class="default">'请输入正确的旧密码'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password.required'</span><span class="default">=&gt;</span><span class="default">'不得为空'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password.min'</span><span class="default">=&gt;</span><span class="default">'密码至少要输入&nbsp;:min&nbsp;位或以上'</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password.confirmed'</span><span class="default">=&gt;</span><span class="default">'两次密码必须一致'</span></td></tr>
+     <tr><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 315 - 0
tests/codeCoverage/Http/Controllers/Auth/RegisterController.php.html

@@ -0,0 +1,315 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\RegisterController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">RegisterController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;19</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\RegisterController">RegisterController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+       <td class="danger small">56.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;19</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#42"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#53"><abbr title="validator(array $data)">validator</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#68"><abbr title="create(array $data)">create</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#77"><abbr title="register(Request $request)">register</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">20.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;11</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">User</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">Events</span><span class="default">\</span><span class="default">Registered</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Request</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Hash</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Validator</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">RegistersUsers</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Str</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">RegisterController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Register&nbsp;Controller</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;This&nbsp;controller&nbsp;handles&nbsp;the&nbsp;registration&nbsp;of&nbsp;new&nbsp;users&nbsp;as&nbsp;well&nbsp;as&nbsp;their</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;validation&nbsp;and&nbsp;creation.&nbsp;By&nbsp;default&nbsp;this&nbsp;controller&nbsp;uses&nbsp;a&nbsp;trait&nbsp;to</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;provide&nbsp;this&nbsp;functionality&nbsp;without&nbsp;requiring&nbsp;any&nbsp;additional&nbsp;code.</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">RegistersUsers</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Where&nbsp;to&nbsp;redirect&nbsp;users&nbsp;after&nbsp;registration.</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$redirectTo</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'/home'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;middleware('auth');</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;a&nbsp;validator&nbsp;for&nbsp;an&nbsp;incoming&nbsp;registration&nbsp;request.</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;array&nbsp;&nbsp;$data</span></td></tr>
+     <tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Contracts\Validation\Validator</span></td></tr>
+     <tr><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">validator</span><span class="keyword">(</span><span class="keyword">array</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">Validator</span><span class="default">::</span><span class="default">make</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'required'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'string'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'max:255'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'unique:users'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'email'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'required'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'string'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'email'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'max:255'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'unique:users'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'required'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'string'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'min:8'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'confirmed'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;user&nbsp;instance&nbsp;after&nbsp;a&nbsp;valid&nbsp;registration.</span></td></tr>
+     <tr><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;array&nbsp;&nbsp;$data</span></td></tr>
+     <tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\App\User</span></td></tr>
+     <tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">create</span><span class="keyword">(</span><span class="keyword">array</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">User</span><span class="default">::</span><span class="default">create</span><span class="keyword">(</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'email'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">[</span><span class="default">'email'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">Hash</span><span class="default">::</span><span class="default">make</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">[</span><span class="default">'password'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'api_token'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">Str</span><span class="default">::</span><span class="default">random</span><span class="keyword">(</span><span class="default">60</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">register</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="79"></a><a href="#79">79</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$headTo</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'headTo'</span><span class="keyword">)</span><span class="default">??</span><span class="default">''</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="80"></a><a href="#80">80</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">validator</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">validate</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="81"></a><a href="#81">81</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="82"></a><a href="#82">82</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">event</span><span class="keyword">(</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">Registered</span><span class="keyword">(</span><span class="default">$user</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">create</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="83"></a><a href="#83">83</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="84"></a><a href="#84">84</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$rolesIds</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'role'</span><span class="keyword">)</span><span class="default">??</span><span class="default">''</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="85"></a><a href="#85">85</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">$rolesIds</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="86"></a><a href="#86">86</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$roleIdArr</span><span class="keyword">=</span><span class="default">explode</span><span class="keyword">(</span><span class="default">','</span><span class="keyword">,</span><span class="default">$rolesIds</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="87"></a><a href="#87">87</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$user</span><span class="default">-&gt;</span><span class="default">roles</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">sync</span><span class="keyword">(</span><span class="default">$roleIdArr</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="88"></a><a href="#88">88</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="89"></a><a href="#89">89</a></div></td><td class="codeLine"><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;guard()-&gt;login($user);</span></td></tr>
+     <tr><td><div align="right"><a name="90"></a><a href="#90">90</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="91"></a><a href="#91">91</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">json_encode</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">toArray</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">$user</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="92"></a><a href="#92">92</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">$headTo</span><span class="keyword">)</span><span class="keyword">{</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">$headTo</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">with</span><span class="keyword">(</span><span class="default">'successTip'</span><span class="keyword">,</span><span class="string">&quot;</span><span class="string">录入用户&nbsp;</span><span class="string">{</span><span class="string">$user</span><span class="string">-&gt;</span><span class="string">name</span><span class="keyword">}</span><span class="string">&nbsp;成功</span><span class="string">&quot;</span><span class="keyword">)</span><span class="keyword">;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="93"></a><a href="#93">93</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">registered</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$user</span><span class="keyword">)</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="94"></a><a href="#94">94</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">?</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">redirectPath</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="95"></a><a href="#95">95</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="96"></a><a href="#96">96</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 195 - 0
tests/codeCoverage/Http/Controllers/Auth/ResetPasswordController.php.html

@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\ResetPasswordController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">ResetPasswordController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\ResetPasswordController">ResetPasswordController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#35"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">ResetsPasswords</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">ResetPasswordController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Password&nbsp;Reset&nbsp;Controller</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;This&nbsp;controller&nbsp;is&nbsp;responsible&nbsp;for&nbsp;handling&nbsp;password&nbsp;reset&nbsp;requests</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;and&nbsp;uses&nbsp;a&nbsp;simple&nbsp;trait&nbsp;to&nbsp;include&nbsp;this&nbsp;behavior.&nbsp;You're&nbsp;free&nbsp;to</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;explore&nbsp;this&nbsp;trait&nbsp;and&nbsp;override&nbsp;any&nbsp;methods&nbsp;you&nbsp;wish&nbsp;to&nbsp;tweak.</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">ResetsPasswords</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Where&nbsp;to&nbsp;redirect&nbsp;users&nbsp;after&nbsp;resetting&nbsp;their&nbsp;password.</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$redirectTo</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'/home'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'guest'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 197 - 0
tests/codeCoverage/Http/Controllers/Auth/VerificationController.php.html

@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth\VerificationController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">VerificationController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\Auth\VerificationController">VerificationController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#35"><abbr title="__construct()">__construct</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="default">\</span><span class="default">Controller</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Foundation</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">VerifiesEmails</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">VerificationController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Email&nbsp;Verification&nbsp;Controller</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|--------------------------------------------------------------------------</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;This&nbsp;controller&nbsp;is&nbsp;responsible&nbsp;for&nbsp;handling&nbsp;email&nbsp;verification&nbsp;for&nbsp;any</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;user&nbsp;that&nbsp;recently&nbsp;registered&nbsp;with&nbsp;the&nbsp;application.&nbsp;Emails&nbsp;may&nbsp;also</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;be&nbsp;re-sent&nbsp;if&nbsp;the&nbsp;user&nbsp;didn't&nbsp;receive&nbsp;the&nbsp;original&nbsp;email&nbsp;message.</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;|</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">VerifiesEmails</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Where&nbsp;to&nbsp;redirect&nbsp;users&nbsp;after&nbsp;verification.</span></td></tr>
+     <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$redirectTo</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">'/home'</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;controller&nbsp;instance.</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'auth'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'signed'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">only</span><span class="keyword">(</span><span class="default">'verify'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">middleware</span><span class="keyword">(</span><span class="default">'throttle:6,1'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">only</span><span class="keyword">(</span><span class="default">'verify'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'resend'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

+ 313 - 0
tests/codeCoverage/Http/Controllers/Auth/dashboard.html

@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Dashboard for D:\Demo\bswas\app\Http\Controllers\Auth</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/nv.d3.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Auth</a></li>
+         <li class="breadcrumb-item active">(Dashboard)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Classes</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="classCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="classComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="ForgotPasswordController.php.html#8">App\Http\Controllers\Auth\ForgotPasswordController</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="LoginController.php.html#14">App\Http\Controllers\Auth\LoginController</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#13">App\Http\Controllers\Auth\PasswordController</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RegisterController.php.html#15">App\Http\Controllers\Auth\RegisterController</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="ResetPasswordController.php.html#8">App\Http\Controllers\Auth\ResetPasswordController</a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="VerificationController.php.html#8">App\Http\Controllers\Auth\VerificationController</a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Class</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="RegisterController.php.html#15">App\Http\Controllers\Auth\RegisterController</a></td><td class="text-right">56</td></tr>
+       <tr><td><a href="LoginController.php.html#14">App\Http\Controllers\Auth\LoginController</a></td><td class="text-right">42</td></tr>
+       <tr><td><a href="PasswordController.php.html#13">App\Http\Controllers\Auth\PasswordController</a></td><td class="text-right">42</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-12">
+     <h2>Methods</h2>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Coverage Distribution</h3>
+     <div id="methodCoverageDistribution" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Complexity</h3>
+     <div id="methodComplexity" style="height: 300px;">
+       <svg></svg>
+     </div>
+    </div>
+   </div>
+   <div class="row">
+    <div class="col-md-6">
+     <h3>Insufficient Coverage</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right">Coverage</th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="ForgotPasswordController.php.html#28"><abbr title="App\Http\Controllers\Auth\ForgotPasswordController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="LoginController.php.html#41"><abbr title="App\Http\Controllers\Auth\LoginController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="LoginController.php.html#45"><abbr title="App\Http\Controllers\Auth\LoginController::username">username</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="LoginController.php.html#58"><abbr title="App\Http\Controllers\Auth\LoginController::login">login</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#29"><abbr title="App\Http\Controllers\Auth\PasswordController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#33"><abbr title="App\Http\Controllers\Auth\PasswordController::change">change</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#37"><abbr title="App\Http\Controllers\Auth\PasswordController::update">update</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#48"><abbr title="App\Http\Controllers\Auth\PasswordController::rules">rules</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="PasswordController.php.html#65"><abbr title="App\Http\Controllers\Auth\PasswordController::validationErrorMessages">validationErrorMessages</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RegisterController.php.html#42"><abbr title="App\Http\Controllers\Auth\RegisterController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RegisterController.php.html#53"><abbr title="App\Http\Controllers\Auth\RegisterController::validator">validator</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RegisterController.php.html#68"><abbr title="App\Http\Controllers\Auth\RegisterController::create">create</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="RegisterController.php.html#77"><abbr title="App\Http\Controllers\Auth\RegisterController::register">register</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="ResetPasswordController.php.html#35"><abbr title="App\Http\Controllers\Auth\ResetPasswordController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+       <tr><td><a href="VerificationController.php.html#35"><abbr title="App\Http\Controllers\Auth\VerificationController::__construct">__construct</abbr></a></td><td class="text-right">0%</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+    <div class="col-md-6">
+     <h3>Project Risks</h3>
+     <div class="scrollbox">
+      <table class="table">
+       <thead>
+        <tr>
+         <th>Method</th>
+         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+        </tr>
+       </thead>
+       <tbody>
+       <tr><td><a href="LoginController.php.html#58"><abbr title="App\Http\Controllers\Auth\LoginController::login">login</abbr></a></td><td class="text-right">20</td></tr>
+       <tr><td><a href="RegisterController.php.html#77"><abbr title="App\Http\Controllers\Auth\RegisterController::register">register</abbr></a></td><td class="text-right">20</td></tr>
+       <tr><td><a href="PasswordController.php.html#48"><abbr title="App\Http\Controllers\Auth\PasswordController::rules">rules</abbr></a></td><td class="text-right">6</td></tr>
+
+       </tbody>
+      </table>
+     </div>
+    </div>
+   </div>
+   <footer>
+    <hr/>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+  <script src="../../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../../.js/d3.min.js" type="text/javascript"></script>
+  <script src="../../../.js/nv.d3.min.js" type="text/javascript"></script>
+  <script type="text/javascript">
+$(document).ready(function() {
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#classCoverageDistribution svg')
+      .datum(getCoverageDistributionData([6,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.multiBarChart();
+    chart.tooltips(false)
+      .showControls(false)
+      .showLegend(false)
+      .reduceXTicks(false)
+      .staggerLabels(true)
+      .yAxis.tickFormat(d3.format('d'));
+
+    d3.select('#methodCoverageDistribution svg')
+      .datum(getCoverageDistributionData([15,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage"))
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getCoverageDistributionData(data, label) {
+    var labels = [
+      '0%',
+      '0-10%',
+      '10-20%',
+      '20-30%',
+      '30-40%',
+      '40-50%',
+      '50-60%',
+      '60-70%',
+      '70-80%',
+      '80-90%',
+      '90-100%',
+      '100%'
+    ];
+    var values = [];
+    $.each(labels, function(key) {
+      values.push({x: labels[key], y: data[key]});
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+    d3.select('#classComplexity svg')
+      .datum(getComplexityData([[0,1,"<a href=\"ForgotPasswordController.php.html#8\">App\\Http\\Controllers\\Auth\\ForgotPasswordController<\/a>"],[0,6,"<a href=\"LoginController.php.html#14\">App\\Http\\Controllers\\Auth\\LoginController<\/a>"],[0,6,"<a href=\"PasswordController.php.html#13\">App\\Http\\Controllers\\Auth\\PasswordController<\/a>"],[0,7,"<a href=\"RegisterController.php.html#15\">App\\Http\\Controllers\\Auth\\RegisterController<\/a>"],[0,1,"<a href=\"ResetPasswordController.php.html#8\">App\\Http\\Controllers\\Auth\\ResetPasswordController<\/a>"],[0,1,"<a href=\"VerificationController.php.html#8\">App\\Http\\Controllers\\Auth\\VerificationController<\/a>"]], 'Class Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  nv.addGraph(function() {
+    var chart = nv.models.scatterChart()
+      .showDistX(true)
+      .showDistY(true)
+      .showLegend(false)
+      .forceX([0, 100]);
+    chart.tooltipContent(function(graph) {
+      return '<p>' + graph.point.class + '</p>';
+    });
+
+    chart.xAxis.axisLabel('Code Coverage (in percent)');
+    chart.yAxis.axisLabel('Method Complexity');
+
+    d3.select('#methodComplexity svg')
+      .datum(getComplexityData([[0,1,"<a href=\"ForgotPasswordController.php.html#28\">App\\Http\\Controllers\\Auth\\ForgotPasswordController::__construct<\/a>"],[0,1,"<a href=\"LoginController.php.html#41\">App\\Http\\Controllers\\Auth\\LoginController::__construct<\/a>"],[0,1,"<a href=\"LoginController.php.html#45\">App\\Http\\Controllers\\Auth\\LoginController::username<\/a>"],[0,4,"<a href=\"LoginController.php.html#58\">App\\Http\\Controllers\\Auth\\LoginController::login<\/a>"],[0,1,"<a href=\"PasswordController.php.html#29\">App\\Http\\Controllers\\Auth\\PasswordController::__construct<\/a>"],[0,1,"<a href=\"PasswordController.php.html#33\">App\\Http\\Controllers\\Auth\\PasswordController::change<\/a>"],[0,1,"<a href=\"PasswordController.php.html#37\">App\\Http\\Controllers\\Auth\\PasswordController::update<\/a>"],[0,2,"<a href=\"PasswordController.php.html#48\">App\\Http\\Controllers\\Auth\\PasswordController::rules<\/a>"],[0,1,"<a href=\"PasswordController.php.html#65\">App\\Http\\Controllers\\Auth\\PasswordController::validationErrorMessages<\/a>"],[0,1,"<a href=\"RegisterController.php.html#42\">App\\Http\\Controllers\\Auth\\RegisterController::__construct<\/a>"],[0,1,"<a href=\"RegisterController.php.html#53\">App\\Http\\Controllers\\Auth\\RegisterController::validator<\/a>"],[0,1,"<a href=\"RegisterController.php.html#68\">App\\Http\\Controllers\\Auth\\RegisterController::create<\/a>"],[0,4,"<a href=\"RegisterController.php.html#77\">App\\Http\\Controllers\\Auth\\RegisterController::register<\/a>"],[0,1,"<a href=\"ResetPasswordController.php.html#35\">App\\Http\\Controllers\\Auth\\ResetPasswordController::__construct<\/a>"],[0,1,"<a href=\"VerificationController.php.html#35\">App\\Http\\Controllers\\Auth\\VerificationController::__construct<\/a>"]], 'Method Complexity'))
+      .transition()
+      .duration(500)
+      .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+
+  function getComplexityData(data, label) {
+    var values = [];
+    $.each(data, function(key) {
+      var value = Math.round(data[key][0]*100) / 100;
+      values.push({
+        x: value,
+        y: data[key][1],
+        class: data[key][2],
+        size: 0.05,
+        shape: 'diamond'
+      });
+    });
+
+    return [
+      {
+        key: label,
+        values: values,
+        color: "#4572A7"
+      }
+    ];
+  }
+});
+  </script>
+ </body>
+</html>

+ 261 - 0
tests/codeCoverage/Http/Controllers/Auth/index.html

@@ -0,0 +1,261 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\Auth</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Controllers</a></li>
+         <li class="breadcrumb-item active">Auth</li>
+         <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;58</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;15</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;6</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="ForgotPasswordController.php.html">ForgotPasswordController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="LoginController.php.html">LoginController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;14</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="PasswordController.php.html">PasswordController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;17</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;5</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="RegisterController.php.html">RegisterController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;19</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="ResetPasswordController.php.html">ResetPasswordController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><img src="../../../.icons/file-code.svg" class="octicon" /><a href="VerificationController.php.html">VerificationController.php</a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="danger"><strong>Low</strong>: 0% to 50%</span>
+     <span class="warning"><strong>Medium</strong>: 50% to 90%</span>
+     <span class="success"><strong>High</strong>: 90% to 100%</span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+   </footer>
+  </div>
+ </body>
+</html>

+ 467 - 0
tests/codeCoverage/Http/Controllers/AuthorityController.php.html

@@ -0,0 +1,467 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="UTF-8">
+  <title>Code Coverage for D:\Demo\bswas\app\Http\Controllers\AuthorityController.php</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <link href="../../.css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/octicons.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/style.css" rel="stylesheet" type="text/css">
+  <link href="../../.css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+  <header>
+   <div class="container-fluid">
+    <div class="row">
+     <div class="col-md-12">
+      <nav aria-label="breadcrumb">
+       <ol class="breadcrumb">
+         <li class="breadcrumb-item"><a href="../../index.html">D:\Demo\bswas\app</a></li>
+         <li class="breadcrumb-item"><a href="../index.html">Http</a></li>
+         <li class="breadcrumb-item"><a href="index.html">Controllers</a></li>
+         <li class="breadcrumb-item active">AuthorityController.php</li>
+
+       </ol>
+      </nav>
+     </div>
+    </div>
+   </div>
+  </header>
+  <div class="container-fluid">
+   <div class="table-responsive">
+    <table class="table table-bordered">
+     <thead>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+      </tr>
+      <tr>
+       <td>&nbsp;</td>
+       <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+       <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+       <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+      </tr>
+     </thead>
+     <tbody>
+      <tr>
+       <td class="danger">Total</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;9</div></td>
+       <td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;42</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger"><abbr title="App\Http\Controllers\AuthorityController">AuthorityController</abbr></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;9</div></td>
+       <td class="danger small">306.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;42</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#22"><abbr title="index()">index</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#35"><abbr title="create()">create</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#48"><abbr title="store(Request $request)">store</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">20.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;18</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#75"><abbr title="validatorCreate(array $data)">validatorCreate</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#83"><abbr title="validatorUpdate(array $data)">validatorUpdate</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;2</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#95"><abbr title="show(Authority $authority)">show</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">2.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#106"><abbr title="edit(Authority $authority)">edit</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;3</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#120"><abbr title="update(Request $request, Authority $authority)">update</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;6</div></td>
+      </tr>
+
+      <tr>
+       <td class="danger" colspan="4">&nbsp;<a href="#137"><abbr title="destroy(Authority $authority)">destroy</abbr></a></td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
+       <td class="danger small">6.00</td>
+       <td class="danger big">       <div class="progress">
+         <div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
+           <span class="sr-only">0.00% covered (danger)</span>
+         </div>
+       </div>
+</td>
+       <td class="danger small"><div align="right">0.00%</div></td>
+       <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
+      </tr>
+
+
+     </tbody>
+    </table>
+   </div>
+   <table id="code" class="table table-borderless table-condensed">
+    <tbody>
+     <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
+     <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Controllers</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Authority</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Owner</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">User</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Exception</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Request</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Response</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Auth</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Gate</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Support</span><span class="default">\</span><span class="default">Facades</span><span class="default">\</span><span class="default">Validator</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">AuthorityController</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Controller</span></td></tr>
+     <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Display&nbsp;a&nbsp;listing&nbsp;of&nbsp;the&nbsp;resource.</span></td></tr>
+     <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">index</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-查询'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$authorities</span><span class="keyword">=</span><span class="default">Authority</span><span class="default">::</span><span class="default">orderBy</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">'asc'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">paginate</span><span class="keyword">(</span><span class="default">100</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">view</span><span class="keyword">(</span><span class="default">'maintenance.authority.index'</span><span class="keyword">,</span><span class="keyword">[</span><span class="default">'authorities'</span><span class="default">=&gt;</span><span class="default">$authorities</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Show&nbsp;the&nbsp;form&nbsp;for&nbsp;creating&nbsp;a&nbsp;new&nbsp;resource.</span></td></tr>
+     <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">create</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-录入'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$owners</span><span class="keyword">=</span><span class="default">Owner</span><span class="default">::</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">view</span><span class="keyword">(</span><span class="default">'maintenance.authority.create'</span><span class="keyword">,</span><span class="default">compact</span><span class="keyword">(</span><span class="default">'owners'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Store&nbsp;a&nbsp;newly&nbsp;created&nbsp;resource&nbsp;in&nbsp;storage.</span></td></tr>
+     <tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Request&nbsp;$request</span></td></tr>
+     <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string</span></td></tr>
+     <tr><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">store</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-录入'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'combinedName'</span><span class="keyword">]</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'name'</span><span class="keyword">)</span><span class="keyword">.</span><span class="default">'_'</span><span class="keyword">.</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'id_owner'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">validatorCreate</span><span class="keyword">(</span><span class="default">$inputs</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">validate</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$successName</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'name'</span><span class="keyword">)</span><span class="default">??</span><span class="default">''</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'name'</span><span class="keyword">]</span><span class="keyword">=</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'combinedName'</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'id_owner'</span><span class="keyword">)</span><span class="default">??</span><span class="default">''</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$owner</span><span class="keyword">=</span><span class="default">Owner</span><span class="default">::</span><span class="default">find</span><span class="keyword">(</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'id_owner'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">isset</span><span class="keyword">(</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'remark'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'remark'</span><span class="keyword">]</span><span class="default">.=</span><span class="string">&quot;</span><span class="string">(key:&nbsp;</span><span class="string">{</span><span class="string">$inputs</span><span class="keyword">[</span><span class="string">'combinedName'</span><span class="keyword">]</span><span class="keyword">}</span><span class="string">)</span><span class="string">&quot;</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">else</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'remark'</span><span class="keyword">]</span><span class="keyword">=</span><span class="string">&quot;</span><span class="string">(key:&nbsp;</span><span class="string">{</span><span class="string">$inputs</span><span class="keyword">[</span><span class="string">'combinedName'</span><span class="keyword">]</span><span class="keyword">}</span><span class="string">)</span><span class="string">&quot;</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'alias_name'</span><span class="keyword">]</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'name'</span><span class="keyword">)</span><span class="keyword">.</span><span class="string">&quot;</span><span class="string">_(货主:</span><span class="string">$owner</span><span class="string">-&gt;</span><span class="string">name</span><span class="string">)</span><span class="string">&quot;</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$successName</span><span class="default">.=</span><span class="string">&quot;</span><span class="string">(货主:</span><span class="string">$owner</span><span class="string">-&gt;</span><span class="string">name</span><span class="string">)</span><span class="string">&quot;</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">else</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$inputs</span><span class="keyword">[</span><span class="default">'alias_name'</span><span class="keyword">]</span><span class="keyword">=</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">input</span><span class="keyword">(</span><span class="default">'name'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$authority</span><span class="keyword">=</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">Authority</span><span class="keyword">(</span><span class="default">$inputs</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$authority</span><span class="default">-&gt;</span><span class="default">save</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"></td></tr>
+     <tr class="danger"><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">json_encode</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">toArray</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">'maintenance/authority/create'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">with</span><span class="keyword">(</span><span class="default">'successTip'</span><span class="keyword">,</span><span class="string">&quot;</span><span class="string">成功录入权限“</span><span class="string">{</span><span class="string">$successName</span><span class="keyword">}</span><span class="string">”</span><span class="string">&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">validatorCreate</span><span class="keyword">(</span><span class="keyword">array</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">Validator</span><span class="default">::</span><span class="default">make</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'max:50'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'required_without:id_owner'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="79"></a><a href="#79">79</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'id_owner'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'max:11'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'required_without:name'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="80"></a><a href="#80">80</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'combinedName'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'max:50'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'unique:authorities,name'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="81"></a><a href="#81">81</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="82"></a><a href="#82">82</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="83"></a><a href="#83">83</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">validatorUpdate</span><span class="keyword">(</span><span class="keyword">array</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="84"></a><a href="#84">84</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="85"></a><a href="#85">85</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">Validator</span><span class="default">::</span><span class="default">make</span><span class="keyword">(</span><span class="default">$data</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="86"></a><a href="#86">86</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'name'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'required'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'string'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'max:50'</span><span class="keyword">]</span><span class="keyword">,</span></td></tr>
+     <tr><td><div align="right"><a name="87"></a><a href="#87">87</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="88"></a><a href="#88">88</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="89"></a><a href="#89">89</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="90"></a><a href="#90">90</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Display&nbsp;the&nbsp;specified&nbsp;resource.</span></td></tr>
+     <tr><td><div align="right"><a name="91"></a><a href="#91">91</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="92"></a><a href="#92">92</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Authority&nbsp;$authority</span></td></tr>
+     <tr><td><div align="right"><a name="93"></a><a href="#93">93</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Response</span></td></tr>
+     <tr><td><div align="right"><a name="94"></a><a href="#94">94</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="95"></a><a href="#95">95</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">show</span><span class="keyword">(</span><span class="default">Authority</span><span class="default">&nbsp;</span><span class="default">$authority</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="96"></a><a href="#96">96</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr><td><div align="right"><a name="97"></a><a href="#97">97</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="98"></a><a href="#98">98</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="99"></a><a href="#99">99</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="100"></a><a href="#100">100</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="101"></a><a href="#101">101</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Show&nbsp;the&nbsp;form&nbsp;for&nbsp;editing&nbsp;the&nbsp;specified&nbsp;resource.</span></td></tr>
+     <tr><td><div align="right"><a name="102"></a><a href="#102">102</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="103"></a><a href="#103">103</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;\App\Http\Controllers\Authority&nbsp;$authority</span></td></tr>
+     <tr><td><div align="right"><a name="104"></a><a href="#104">104</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Response</span></td></tr>
+     <tr><td><div align="right"><a name="105"></a><a href="#105">105</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="106"></a><a href="#106">106</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">edit</span><span class="keyword">(</span><span class="default">Authority</span><span class="default">&nbsp;</span><span class="default">$authority</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="107"></a><a href="#107">107</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="108"></a><a href="#108">108</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-编辑'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="109"></a><a href="#109">109</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$owners</span><span class="keyword">=</span><span class="default">Owner</span><span class="default">::</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="110"></a><a href="#110">110</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">view</span><span class="keyword">(</span><span class="default">'maintenance.authority.edit'</span><span class="keyword">,</span><span class="default">compact</span><span class="keyword">(</span><span class="default">'owners'</span><span class="keyword">,</span><span class="default">'authority'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="111"></a><a href="#111">111</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="112"></a><a href="#112">112</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="113"></a><a href="#113">113</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="114"></a><a href="#114">114</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Update&nbsp;the&nbsp;specified&nbsp;resource&nbsp;in&nbsp;storage.</span></td></tr>
+     <tr><td><div align="right"><a name="115"></a><a href="#115">115</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="116"></a><a href="#116">116</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Request&nbsp;$request</span></td></tr>
+     <tr><td><div align="right"><a name="117"></a><a href="#117">117</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;\App\Http\Controllers\Authority&nbsp;$authority</span></td></tr>
+     <tr><td><div align="right"><a name="118"></a><a href="#118">118</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Response</span></td></tr>
+     <tr><td><div align="right"><a name="119"></a><a href="#119">119</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="120"></a><a href="#120">120</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">update</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">Authority</span><span class="default">&nbsp;</span><span class="default">$authority</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="121"></a><a href="#121">121</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="122"></a><a href="#122">122</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-编辑'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="123"></a><a href="#123">123</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">validatorUpdate</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">validate</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="124"></a><a href="#124">124</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$authority</span><span class="default">-&gt;</span><span class="default">fill</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">all</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="125"></a><a href="#125">125</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$authority</span><span class="default">-&gt;</span><span class="default">update</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="126"></a><a href="#126">126</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">json_encode</span><span class="keyword">(</span><span class="default">$request</span><span class="default">-&gt;</span><span class="default">toArray</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="127"></a><a href="#127">127</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">'maintenance/authority/'</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">with</span><span class="keyword">(</span><span class="default">'successTip'</span><span class="keyword">,</span><span class="string">&quot;</span><span class="string">成功修改权限“</span><span class="string">{</span><span class="string">$authority</span><span class="keyword">[</span><span class="string">'name'</span><span class="keyword">]</span><span class="keyword">}</span><span class="string">”!</span><span class="string">&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="128"></a><a href="#128">128</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="129"></a><a href="#129">129</a></div></td><td class="codeLine"></td></tr>
+     <tr><td><div align="right"><a name="130"></a><a href="#130">130</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
+     <tr><td><div align="right"><a name="131"></a><a href="#131">131</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Remove&nbsp;the&nbsp;specified&nbsp;resource&nbsp;from&nbsp;storage.</span></td></tr>
+     <tr><td><div align="right"><a name="132"></a><a href="#132">132</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
+     <tr><td><div align="right"><a name="133"></a><a href="#133">133</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;\App\Http\Controllers\Authority&nbsp;$authority</span></td></tr>
+     <tr><td><div align="right"><a name="134"></a><a href="#134">134</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array|Response</span></td></tr>
+     <tr><td><div align="right"><a name="135"></a><a href="#135">135</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Exception</span></td></tr>
+     <tr><td><div align="right"><a name="136"></a><a href="#136">136</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
+     <tr><td><div align="right"><a name="137"></a><a href="#137">137</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">destroy</span><span class="keyword">(</span><span class="default">Authority</span><span class="default">&nbsp;</span><span class="default">$authority</span><span class="keyword">)</span></td></tr>
+     <tr><td><div align="right"><a name="138"></a><a href="#138">138</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="139"></a><a href="#139">139</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">Gate</span><span class="default">::</span><span class="default">allows</span><span class="keyword">(</span><span class="default">'权限-删除'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">{</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">redirect</span><span class="keyword">(</span><span class="default">url</span><span class="keyword">(</span><span class="default">'/'</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="140"></a><a href="#140">140</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">log</span><span class="keyword">(</span><span class="default">__METHOD__</span><span class="keyword">,</span><span class="default">__FUNCTION__</span><span class="keyword">,</span><span class="default">$authority</span><span class="default">-&gt;</span><span class="default">toJson</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">Auth</span><span class="default">::</span><span class="default">user</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">'id'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="141"></a><a href="#141">141</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$re</span><span class="keyword">=</span><span class="default">$authority</span><span class="default">-&gt;</span><span class="default">delete</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+     <tr class="danger"><td><div align="right"><a name="142"></a><a href="#142">142</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="default">'success'</span><span class="default">=&gt;</span><span class="default">$re</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
+     <tr class="warning"><td><div align="right"><a name="143"></a><a href="#143">143</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
+     <tr><td><div align="right"><a name="144"></a><a href="#144">144</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
+
+    </tbody>
+   </table>
+   <footer>
+    <hr/>
+    <h4>Legend</h4>
+    <p>
+     <span class="success"><strong>Executed</strong></span>
+     <span class="danger"><strong>Not Executed</strong></span>
+     <span class="warning"><strong>Dead Code</strong></span>
+    </p>
+    <p>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 6.1.4</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.5</a> with <a href="https://xdebug.org/">Xdebug 2.9.0</a> and <a href="https://phpunit.de/">PHPUnit 7.5.16</a> at Thu Dec 12 13:33:01 CST 2019.</small>
+    </p>
+    <a title="Back to the top" id="toplink" href="#">
+        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+    </a>
+   </footer>
+  </div>
+  <script src="../../.js/jquery.min.js" type="text/javascript"></script>
+  <script src="../../.js/popper.min.js" type="text/javascript"></script>
+  <script src="../../.js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="../../.js/file.js" type="text/javascript"></script>
+ </body>
+</html>

Некоторые файлы не были показаны из-за большого количества измененных файлов