feat: edit journalist

This commit is contained in:
myuqinurrohman 2025-04-14 11:03:24 +07:00
parent 8fcd20c9f5
commit e84a7a287b
4 changed files with 203 additions and 3 deletions

View File

@ -205,9 +205,59 @@ public function processEditAction(Request $request, $id, $action){
}
}
public function edit(){}
public function edit($id){
$journalist = Journalist::findOrFail(decrypt_id($id));
public function update(){}
return view('dashboard.journalists.edit', [
'title' => 'Ubah Data Jurnalis',
'journalist' => $journalist
]);
}
public function update(JournalistRequest $request, $id){
$validatedData = $request->validated();
$journalist = Journalist::findOrFail(decrypt_id($id));
if(!in_array($journalist->edit_status, ['2'])){
abort(404);
}
$fileFieldMap = [
'journalist_ukw_sertificate_doc' => 'ukw_sertificate_doc',
'journalist_press_card_doc' => 'press_card_doc',
];
$journalistFileNames = [];
foreach ($fileFieldMap as $requestKey => $dbField) {
if ($request->hasFile($requestKey) && filled($validatedData[$requestKey])) {
$journalistFileNames[$requestKey] = store_file($validatedData[$requestKey], '/uploads/journalists', 'public')['randomFileName'];
}else{
$journalistFileNames[$requestKey] = $journalist->{$dbField};
}
}
$createdJournalist = $journalist->update([
'name' => $validatedData['journalist_name'],
'email' => $validatedData['journalist_email'],
'phone_number' => $validatedData['journalist_phone_number'],
'press_card' => $validatedData['journalist_press_card'],
'press_card_doc' => $journalistFileNames['journalist_press_card_doc'],
'ukw_sertificate' => $validatedData['journalist_ukw_sertificate'],
'ukw_sertificate_doc' => $journalistFileNames['journalist_ukw_sertificate_doc'],
'approved_status' => $journalist->approved_status,
'approved_at' => $journalist->approved_at,
'edit_description' => null,
'edit_status' => '0',
'media_id' => Auth::user()->company->media->id
]);
if($createdJournalist){
return redirect()->route('dashboard.journalists.index')->with('success-status', 'Berhasil mengubah jurnalis.');
}else{
return redirect()->route('dashboard.journalists.index')->with('failed-status', 'Gagal mengubah jurnalis.');
}
}
public function show($id){
$journalist = Journalist::findOrFail(decrypt_id($id));

View File

@ -0,0 +1,146 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'journalists'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between g-3">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">Ubah Data Jurnalis</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Ubah data jurnalis Anda di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
<a href="{{route('dashboard.journalists.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
<a href="{{route('dashboard.journalists.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
</div>
</div>
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="example-alert mb-2">
<div class="alert alert-info alert-icon">
<em class="icon ni ni-alert-circle"></em> Mohon lakukan pembaruan data jurnalis sesuai dengan informasi yang telah diajukan sebelumnya. Pastikan seluruh data telah diisi dengan lengkap dan benar.
</div>
</div>
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<div class="card-inner">
{{-- <div class="nk-divider divider md"></div> --}}
<form action="{{route('dashboard.journalists.update', ['id' => encrypt_id($journalist->id)])}}" method="post" id="myForm" enctype="multipart/form-data">
@csrf
<div class="nk-block">
<div class="row gy-4">
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_name">Nama Jurnalis</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="journalist_name" placeholder="Nama perusahaan Anda" value="{{$journalist->name}}" name="journalist_name">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_email">Email Jurnalis</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="journalist_email" placeholder="Nama media Anda" value="{{$journalist->email}}" name="journalist_email">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_phone_number">Nomor Telepon Jurnalis</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="journalist_phone_number" placeholder="Nama media Anda" value="{{$journalist->phone_number}}" name="journalist_phone_number">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_press_card">Kartu Pers</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="journalist_press_card" placeholder="Alamat perusahaan Anda" value="{{$journalist->press_card ?? '-'}}" name="journalist_press_card">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_ukw_sertificate">Kartu Pers</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="journalist_ukw_sertificate" placeholder="Kartu Pers Jurnalis" value="{{$journalist->ukw_certificate ?? '-'}}" name="journalist_ukw_sertificate">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_press_card">
Organisasi Kewartawanan
@if (filled($journalist->press_card))
<span>
<a href="{{ filled($journalist->press_card) ? asset('storage/uploads/media/'.$journalist->press_card) : 'javascript:void(0);' }}"
target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-eye">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" />
</svg>
</a>
</span>
@endif
</label>
<div class="form-control-wrap">
<div class="form-file">
<input type="file" accept="application/pdf" class="form-file-input" id="journalist_press_card" name="journalist_press_card">
<label class="form-file-label {{!filled($journalist->press_card) ? 'text-danger' : ''}}" for="journalist_press_card">{{$journalist->press_card ?? 'Belum ditambahkan'}}</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="journalist_ukw_sertificate_doc">Sertifikat Dewan Press
@if (filled($journalist->ukw_certificate))
<span>
<a href="{{ filled($journalist->ukw_certificate) ? asset('storage/uploads/media/'.$journalist->ukw_certificate) : 'javascript:void(0);' }}"
target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-eye">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" />
</svg>
</a>
</span>
@endif
</label>
<div class="form-control-wrap">
<div class="form-file">
<input type="file" accept="application/pdf" class="form-file-input" id="journalist_ukw_sertificate_doc" name="journalist_ukw_sertificate_doc">
<label class="form-file-label {{!filled($journalist->ukw_certificate) ? 'text-danger' : ''}}" for="journalist_ukw_sertificate_doc">{{$journalist->ukw_certificate ?? 'Belum ditambahkan'}}</label>
</div>
</div>
</div>
</div>
</div>
<div class="mt-5 d-flex justify-content-end p-2 rounded-2" style="background-color: #f4f4f4 !important;">
<a href="{{route('dashboard.journalists.edit', ['id' => encrypt_id($journalist->id)])}}" class="btn btn-danger mx-2">Reset Perubahan</a>
<button type="button" class="btn btn-primary" id="submitButton">Kirim</button>
</div>
</div><!-- .nk-block -->
</form>
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => false])

View File

@ -160,6 +160,10 @@
<span>Ubah</span></a>
@elseif($journalist->edit_status === '1')
<a href="javascript:void(0);" class="btn d-none d-sm-inline-flex" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Menunggu persetujuan Admin" aria-disabled="true" tabindex="-1" style="background-color: #DBDBDB; color: #89A8B2;"><em class="icon ni ni-pen2"></em><span>Ubah</span></a>
@elseif($journalist->edit_status === '2')
<a href="{{route('dashboard.journalists.edit', ['id' => encrypt_id($journalist->id)])}}" class="btn btn-info mx-1">
<em class="icon ni ni-pen2"></em>
<span>Ubah</span></a>
@endif
</div>
</div>

View File

@ -315,7 +315,7 @@
Route::put('/{id}/process/{action}', 'processEditAction')->name('edit.process.action');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::post('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
});