diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index d87f5d84..c889e9cd 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -249,9 +249,40 @@ class BookingController extends Controller return response()->json(['message'=>'Access denied'], 200); } + // Rejected bankslip cannot be approve again + if($userBankSlip->is_reject == 1) + { + return response()->json(['message'=>'Bankslip already rejected'],200); + } + $userBankSlip->is_approve = 1; $userBankSlip->save(); return response()->json(['message'=>'Success'],200); } + public function rejectBankSlip(Request $request, $book_id) + { + if (!$Booking = Booking::where('user_id',Auth::user()->id)->where('id',$book_id)->first()) + { + return response()->json(['message'=>'Access denied'], 200); + } + + if(!$userBankSlip = UserBankSlip::where('book_id',$Booking->id)->first()) + { + return response()->json(['message'=>'Access denied'], 200); + } + + // approved bankslip cannot be reject again + if($userBankSlip->is_approve == 1) + { + return response()->json(['message'=>'Bankslip already approved'],200); + } + + $userBankSlip->is_reject = 1; + $userBankSlip->reject_reason = $request->reject_reason; + $userBankSlip->save(); + + return response()->json(['message'=>'Success'],200); + } + } diff --git a/database/migrations/2018_06_18_104015_add_reject_user_bank_slip_table.php b/database/migrations/2018_06_18_104015_add_reject_user_bank_slip_table.php new file mode 100644 index 00000000..f4d35ea3 --- /dev/null +++ b/database/migrations/2018_06_18_104015_add_reject_user_bank_slip_table.php @@ -0,0 +1,36 @@ +boolean('is_reject')->default('0'); + $table->string('reject_reason')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + if (Schema::hasColumn('user_bank_slips', 'is_reject')) { + Schema::table('user_bank_slips', function (Blueprint $table) { + // $table->dropColumn('is_reject'); + // $table->dropColumn('reject_reason'); + }); + } + } +} diff --git a/routes/api.php b/routes/api.php index 623427df..9c012662 100644 --- a/routes/api.php +++ b/routes/api.php @@ -81,6 +81,7 @@ Route::delete('setting-supplier/{supplier}', 'SettingSupplierController@delete') Route::post('upload-china-bankslip', 'ChinaBankSlipController@store'); +Route::post('booking/{book_id}/reject-bank-slip','BookingController@rejectBankSlip'); Route::post('booking/{book_id}/approve-bank-slip','BookingController@approveBankSlip'); Route::post('booking/{book_id}/cancel', 'BookingController@cancel'); Route::post('booking/{id}/upload-user-bankslip', 'BookingController@uploadbankslip'); diff --git a/tests/Feature/BookingTest.php b/tests/Feature/BookingTest.php index c0e2a0b0..938583ba 100644 --- a/tests/Feature/BookingTest.php +++ b/tests/Feature/BookingTest.php @@ -117,4 +117,14 @@ class BookingTest extends TestCase ->json('POST','/api/booking/' . $this->booking->id . '/approve-bank-slip', []) ->assertSuccessful(); } + + + public function testRejectBankSlip() + { + $this->actingAs($this->user) + ->json('POST','/api/booking/' . $this->booking->id . '/reject-bank-slip', [ + 'reject_reason' => 'Amount no enough' + ]) + ->assertSuccessful(); + } }