diff --git a/app/Http/Controllers/Admin/CampaignCrudController.php b/app/Http/Controllers/Admin/CampaignCrudController.php index e82ec0e..bb91c00 100644 --- a/app/Http/Controllers/Admin/CampaignCrudController.php +++ b/app/Http/Controllers/Admin/CampaignCrudController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Requests\CampaignRequest; +use App\Models\Campaign; use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; @@ -40,6 +41,7 @@ public function setup() protected function setupListOperation() { CRUD::column('partner_id'); + CRUD::column('verified_at'); CRUD::column('title'); CRUD::column('status'); CRUD::column('fund_target'); @@ -51,6 +53,8 @@ protected function setupListOperation() CRUD::column('finish_date'); CRUD::column('slug'); + CRUD::addButtonFromModelFunction('line', 'verify', 'verifyButton', 'end'); + // CRUD::column('description'); /** @@ -100,4 +104,19 @@ protected function setupUpdateOperation() { $this->setupCreateOperation(); } + + // custom function to verify campaign + public function verify(Campaign $campaign) + { + $campaign->verify(); + + return redirect()->back(); + } + + public function unverify(Campaign $campaign) + { + $campaign->unverify(); + + return redirect()->back(); + } } diff --git a/app/Models/Campaign.php b/app/Models/Campaign.php index 37f4326..1eb074e 100644 --- a/app/Models/Campaign.php +++ b/app/Models/Campaign.php @@ -21,7 +21,8 @@ class Campaign extends Model 'tenor', 'start_date', 'finish_date', - 'status' + 'status', + 'verified_at' ]; public function __construct() @@ -90,4 +91,28 @@ public function getCollectedPerTotalAttribute() return 'Rp. ' . number_format($this->fundings->sum('fund_nominal'), 0, ',', '.') . " / Rp. " . number_format($this->fund_target, 0, ',', '.'); } + + public function getIsVerifiedAttribute() + { + return $this->verified_at != null; + } + + public function verify() + { + $this->update(['verified_at' => now()]); + } + + public function unverify() + { + $this->update(['verified_at' => null]); + } + + public function verifyButton() + { + if ($this->is_verified) { + return ' Batalkan Verifikasi'; + } + + return ' Verifikasi'; + } } diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 501e1f5..d177a4b 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -24,4 +24,7 @@ Route::get('partner/{partner}/verify', 'PartnerCrudController@verify')->name('partner.verify'); Route::get('partner/{partner}/unverify', 'PartnerCrudController@unverify')->name('partner.unverify'); + + Route::get('campaign/{campaign}/verify', 'CampaignCrudController@verify')->name('campaign.verify'); + Route::get('campaign/{campaign}/unverify', 'CampaignCrudController@unverify')->name('campaign.unverify'); }); // this should be the absolute last line of this file \ No newline at end of file