diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index 9f482d2..7b97653 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -9,6 +9,7 @@ use App\Models\ContentRecap; use App\Models\GovernmentAgency; use App\Models\IssueManagement; +use App\Models\Journalist; use App\Models\Location; use App\Models\Media; use App\Models\MediaMonitoring; @@ -603,6 +604,91 @@ public function media(Request $request){ } + public function journalist(Request $request){ + if ($request->ajax()) { + + $data = Journalist::with(['media' => function($query) { + $query->withTrashed(); + }, 'media.company' => function($query) { + $query->withTrashed(); + }, 'media.company.user' => function($query) { + $query->withTrashed(); + }])->get(); + + + return DataTables::of($data) + ->addIndexColumn() + ->addColumn('journalist_name', function ($data) { + return $data->name; + }) + ->addColumn('company_name', function ($data) { + return $data->media->company->name; + }) + ->addColumn('status', function ($data) { + switch($data->media->company->user->status){ + case 0: + return 'Menunggu'; + case 1: + return 'Diterima'; + case 2: + return 'Ditolak'; + case 3: + return 'Tidak Diketahui'; + default: + return 'Tidak Diketahui'; + } + }) + ->addColumn('status_edit', function ($data) { + switch($data->edit_status){ + case 0: + return 'Menunggu'; + case 1: + return 'Diterima'; + case 2: + return 'Ditolak'; + case 3: + return 'Tidak Diketahui'; + default: + return 'Tidak Diketahui'; + } + }) + ->addColumn('action', function ($data) { + $showUrl = route('dashboard.journalists.show', ['id' => encrypt_id($data->id)]); + + $editUrl = route('dashboard.journalists.edit', ['id' => encrypt_id($data->id)]); + + $deleteUrl = route('dashboard.journalists.destroy', ['id' => encrypt_id($data->id)]); + + $dropdown = ''; + + return $dropdown; + }) + + ->rawColumns(['status', 'status_edit', 'action']) + ->make(true); + } + + return response()->json(['error' => 'Unauthorized'], 401); + + } + public function contentRecap(Request $request){ if ($request->ajax()) { diff --git a/app/Http/Controllers/Dashboard/JournalistController.php b/app/Http/Controllers/Dashboard/JournalistController.php new file mode 100644 index 0000000..3adc24c --- /dev/null +++ b/app/Http/Controllers/Dashboard/JournalistController.php @@ -0,0 +1,35 @@ + 'Jurnalis' + ]); + } + + public function create(){} + + public function store(){} + + public function edit(){} + + public function update(){} + + public function show($id){ + $journalist = Journalist::findOrFail(decrypt_id($id)); + + return view('dashboard.journalists.show', [ + 'title' => 'Detail Jurnalis', + 'journalist' => $journalist + ]); + } + + public function destroy(){} +} diff --git a/app/Models/Company.php b/app/Models/Company.php index 8efcf2b..1e8eb42 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -19,12 +19,12 @@ class Company extends Model 'director_nik_doc', 'deed_incorporation', 'deed_incorporation_doc', - 'siup_nib', - 'siup_nib_doc', - 'npwp', - 'npwp_doc', - 'pkp', - 'pkp_doc', + 'trade_license', + 'trade_license_doc', + 'tax_id_number', + 'tax_id_number_doc', + 'taxable_enterprise', + 'taxable_enterprise_doc', 'annual_tax_return', 'annual_tax_return_doc', 'domicile_certificate', @@ -33,6 +33,10 @@ class Company extends Model 'profile_doc', 'cooperation_request', 'cooperation_request_doc', + 'edit_description', + 'edit_status', + 'validated_at', + 'rejection_reason', 'user_id' ]; diff --git a/app/Models/Journalist.php b/app/Models/Journalist.php index b945732..41cf48a 100644 --- a/app/Models/Journalist.php +++ b/app/Models/Journalist.php @@ -3,9 +3,12 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Journalist extends Model { + use SoftDeletes; + protected $table = 'journalists'; protected $fillable = [ @@ -14,9 +17,11 @@ class Journalist extends Model 'phone_number', 'press_card', 'press_card_doc', - 'ukw_sertificate', - 'ukw_sertificate_doc', - 'media_id', + 'ukw_certificate', + 'ukw_certificate_doc', + 'edit_description', + 'edit_status', + 'media_id' ]; public function media(){ diff --git a/app/Models/Legacy/OldJournalist.php b/app/Models/Legacy/OldJournalist.php new file mode 100644 index 0000000..eb78672 --- /dev/null +++ b/app/Models/Legacy/OldJournalist.php @@ -0,0 +1,12 @@ +string('name'); $table->string('email'); $table->string('phone_number'); - $table->string('press_card'); + $table->string('press_card')->nullable(); $table->string('press_card_doc')->nullable(); - $table->string('ukw_sertificate'); - $table->string('ukw_sertificate_doc')->nullable(); + $table->string('ukw_certificate')->nullable(); + $table->string('ukw_certificate_doc')->nullable(); + $table->text('edit_description')->nullable(); + $table->enum('edit_status', ['0', '1', '2', '3'])->default('0'); $table->unsignedBigInteger('media_id'); $table->foreign('media_id')->references('id')->on('media'); $table->timestamps(); + $table->softDeletes(); }); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index ea1ecd9..30d1909 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -17,6 +17,7 @@ public function run(): void $this->call(UserSeeder::class); $this->call(CompanySeeder::class); $this->call(MediaSeeder::class); + $this->call(JournalistSeeder::class); $this->call(ClassificationSeeder::class); $this->call(SubClassificationSeeder::class); $this->call(GovernmentAgencySeeder::class); diff --git a/database/seeders/JournalistSeeder.php b/database/seeders/JournalistSeeder.php index 8b4aa61..8445e73 100644 --- a/database/seeders/JournalistSeeder.php +++ b/database/seeders/JournalistSeeder.php @@ -2,6 +2,8 @@ namespace Database\Seeders; +use App\Models\Journalist; +use App\Models\Legacy\OldJournalist; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -12,6 +14,25 @@ class JournalistSeeder extends Seeder */ public function run(): void { - // + $legacyJournalists = OldJournalist::all(); + + foreach($legacyJournalists as $legacyJournalist){ + Journalist::create([ + 'id' => $legacyJournalist->id, + 'name' => $legacyJournalist->name, + 'email' => $legacyJournalist->email, + 'phone_number' => $legacyJournalist->phone, + 'press_card' => $legacyJournalist->press_card, + 'press_card_doc' => $legacyJournalist->doc_of_press_card, + 'ukw_certificate' => $legacyJournalist->certificate, + 'ukw_certificate_doc' => $legacyJournalist->doc_of_certificate, + 'edit_description' => $legacyJournalist->description_edit, + 'edit_status' => $legacyJournalist->status_edit, + 'created_at' => $legacyJournalist->created_at, + 'updated_at' => $legacyJournalist->updated_at, + 'deleted_at' => $legacyJournalist->deleted_at, + 'media_id' => $legacyJournalist->media, + ]); + } } } diff --git a/resources/views/dashboard/journalists/index.blade.php b/resources/views/dashboard/journalists/index.blade.php new file mode 100644 index 0000000..731fd33 --- /dev/null +++ b/resources/views/dashboard/journalists/index.blade.php @@ -0,0 +1,65 @@ +@include('partials.dashboard.head') +@include('partials.dashboard.sidebar', ['page' => 'journalists']) +@include('partials.dashboard.header') + +
+
+
+
+
+
+
+

{{$title}}

+
+ {{--
+
+ +
+ +
+
+
--}} +
+
+
+
+
+
+ + + + + + + + + + + + + +
NoNama JurnalisPerusahaanEmailNo TeleponStatusStatus Edit
+
+
+
+
+
+
+
+
+ +@include('partials.dashboard.footer' ,['datatable' => 'journalist']) diff --git a/resources/views/dashboard/journalists/show.blade.php b/resources/views/dashboard/journalists/show.blade.php new file mode 100644 index 0000000..d2c482f --- /dev/null +++ b/resources/views/dashboard/journalists/show.blade.php @@ -0,0 +1,130 @@ +@include('partials.dashboard.head') +@include('partials.dashboard.sidebar', ['page' => 'journalists']) +@include('partials.dashboard.header') + +
+
+
+
+
+
+
+
+ +
+
+ {{--
+
Personal Information
+

Basic info, like your name and address, that you use on Nio Platform.

+
--}} +
+
+
+ Nama Jurnalis + {{$journalist->name}} +
+
+
+
+ Email + {{$journalist->email}} +
+
+
+
+ Nomor Telepon + {{$journalist->email}} +
+
+
+
+ Kartu Pers + + @if ($journalist->press_card_doc) + {{$journalist->press_card}} + @else + {{$journalist->press_card ?? '-'}} + @endif + +
+
+
+
+ Sertifikat UKW + + @if ($journalist->ukw_sertificate_doc) + {{$journalist->ukw_sertificate}} + @else + {{$journalist->ukw_sertificate ?? '-'}} + @endif + +
+
+
+
+ Status + @switch($journalist->media->company->user->status) + @case(0) + Menunggu + @break + @case(1) + Diterima + @break + @case(2) + Ditolak + @break + @default + Tidak Diketahui + @endswitch +
+ +
+
+
+ {{--
--}} + {{-- @if (filled($journalist->rejection_reason)) +
+
+ Alasan Penolakan +
+
+
+
+ {!!$company->rejection_reason ?? '-' !!} +
+
+
+
+ @endif --}} + {{--
+
+ Konten +
+
+
+
+ {!!$journalistMonitoring->content!!} +
+
+
+
--}} +
+
+ Kembali + {{-- Ubah --}} +
+
+
+
+
+
+
+
+
+
+ +@include('partials.dashboard.footer', ['rich_editor' => false]) diff --git a/resources/views/partials/app/datatable.blade.php b/resources/views/partials/app/datatable.blade.php index 14fb53b..418a512 100644 --- a/resources/views/partials/app/datatable.blade.php +++ b/resources/views/partials/app/datatable.blade.php @@ -41,7 +41,8 @@ autoWidth: false, order: [[5, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -68,7 +69,8 @@ autoWidth: false, order: [[5, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -94,7 +96,8 @@ autoWidth: false, order: [[5, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -121,7 +124,8 @@ autoWidth: false, order: [[5, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -145,7 +149,8 @@ autoWidth: false, order: [[3, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -172,7 +177,8 @@ autoWidth: false, order: [[6, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -196,7 +202,8 @@ autoWidth: false, order: [[3, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -227,7 +234,8 @@ autoWidth: false, order: [[10, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -258,7 +266,39 @@ autoWidth: false, order: [[10, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true + }); + }); + +@endif + +@if ($datatable === 'journalist') + @@ -286,7 +326,8 @@ autoWidth: false, order: [[7, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -316,7 +357,8 @@ autoWidth: false, order: [[9, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -349,7 +391,8 @@ autoWidth: false, order: [[12, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -376,7 +419,8 @@ autoWidth: false, order: [[6, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); @@ -399,7 +443,8 @@ autoWidth: false, order: [[1, 'desc']], pagingType: "simple", - lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']] + lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], + scrollX: true }); }); diff --git a/resources/views/partials/dashboard/sidebar.blade.php b/resources/views/partials/dashboard/sidebar.blade.php index 69141a5..20eafad 100644 --- a/resources/views/partials/dashboard/sidebar.blade.php +++ b/resources/views/partials/dashboard/sidebar.blade.php @@ -106,11 +106,14 @@
  • - + Jurnalis
  • +
  • +
    Kerjasama Eksternal
    +
  • diff --git a/routes/web.php b/routes/web.php index d3bec14..68c631b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Dashboard\DatatableController; use App\Http\Controllers\Dashboard\GovernmentAgencyController; use App\Http\Controllers\Dashboard\IssueManagementController; +use App\Http\Controllers\Dashboard\JournalistController; use App\Http\Controllers\Dashboard\LocationController; use App\Http\Controllers\Dashboard\MediaController; use App\Http\Controllers\Dashboard\MediaMonitoringController; @@ -177,6 +178,20 @@ Route::get('/data', [DatatableController::class, 'media'])->name('data'); }); + Route::prefix('journalists')->name('journalists.')->group(function(){ + Route::controller(JournalistController::class)->group(function(){ + Route::get('/', 'index')->name('index'); + Route::get('/create', 'create')->name('create'); + Route::post('/', 'store')->name('store'); + Route::get('/{id}/show', 'show')->name('show'); + Route::get('/{id}/edit', 'edit')->name('edit'); + Route::put('/{id}', 'update')->name('update'); + Route::delete('/{id}', 'destroy')->name('destroy'); + }); + + Route::get('/data', [DatatableController::class, 'journalist'])->name('data'); + }); + Route::prefix('content-recaps')->name('content.recaps.')->group(function(){ Route::controller(ContentRecapController::class)->group(function(){ Route::get('/', 'index')->name('index');