feat: accept and reject media edit

chore: show media UI
This commit is contained in:
myuqinurrohman 2025-04-11 09:57:06 +07:00
parent 7ac3f28dc7
commit 4ffd6df2b9
23 changed files with 1491 additions and 266 deletions

View File

@ -92,8 +92,8 @@ public function map($company): array
$company->name,
$company->email,
$company->director_name,
get_user_status($company->user->status),
$company->address,
get_user_status($company->user->status),
get_edit_status($company->edit_status),
Carbon::parse($company->created_at)->locale('id')->translatedFormat('l, d F Y'),
Carbon::parse($company->validated_at)->locale('id')->translatedFormat('l, d F Y')
@ -104,7 +104,7 @@ public function headings(): array
{
return [
['Data Perusahaan', '', '', '', '', '', '', '', '', ''],
['NO', 'Nama Perusahaan', 'Email', 'Direktur', 'Status Akun', 'Alamat', 'Status Edit', 'Tanggal Daftar', 'Tanggal Validasi']
['NO', 'Nama Perusahaan', 'Email', 'Direktur', 'Alamat', 'Status', 'Status Edit', 'Tanggal Daftar', 'Tanggal Validasi']
];
}

165
app/Exports/MediaExport.php Normal file
View File

@ -0,0 +1,165 @@
<?php
namespace App\Exports;
use App\Models\Media;
use Carbon\Carbon;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class MediaExport implements FromCollection, WithHeadings, WithStyles, WithMapping
{
/**
* @return \Illuminate\Support\Collection
*/
protected $no = 1;
protected $type;
protected $classification;
protected $status;
protected $edit_status;
protected $address;
protected $register_year;
protected $register_month;
protected $register_date;
public function __construct($type, $classification, $status, $edit_status, $address, $register_year, $register_month, $register_date)
{
$this->type = $type;
$this->classification = $classification;
$this->status = $status;
$this->edit_status = $edit_status;
$this->address = $address;
$this->register_year = $register_year;
$this->register_month = $register_month;
$this->register_date = $register_date;
}
public function collection()
{
$query = Media::with(['company.user']);
if($this->type !== 'all'){
if($this->type === 'online'){
$query->where('type', 'online');
}elseif($this->type === 'print'){
$query->where('type', 'cetak');
}else if($this->type === 'radio'){
$query->where('type', 'radio');
}else if($this->type === 'television'){
$query->where('type', 'televisi');
}
}
if($this->classification !== 'all'){
if($this->classification === 'local'){
$query->where('classification', 'lokal');
}elseif($this->classification === 'regional'){
$query->where('classification', 'regional');
}else if($this->classification === 'national'){
$query->where('classification', 'nasional');
}
}
if($this->status !== 'all'){
if($this->status === 'waiting'){
$query->whereHas('user', function ($q){
$q->where('status', '0');
});
}else if($this->status === 'accepted'){
$query->whereHas('user', function ($q){
$q->where('status', '1');
});
}else if($this->status === 'rejected'){
$query->whereHas('user', function ($q){
$q->where('status', '2');
});
}
}
if($this->edit_status !== 'all'){
if($this->edit_status === 'no-edit'){
$query->where('edit_status', '0');
}elseif($this->edit_status === 'waiting'){
$query->where('edit_status', '1');
}else if($this->edit_status === 'accepted'){
$query->where('edit_status', '2');
}else if($this->edit_status === 'rejected'){
$query->where('edit_status', '3');
}
}
if ($this->address) {
$query->where('address', 'LIKE', '%'.$this->address.'%');
}
if ($this->register_year) {
$query->whereYear('created_at', $this->register_year);
}
if ($this->register_month) {
$monthYear = Carbon::parse($this->register_month);
$query->whereYear('created_at', $monthYear->year)
->whereMonth('created_at', $monthYear->month);
}
if ($this->register_date) {
$query->whereDate('created_at', $this->register_date);
}
return $query->get();
}
public function map($media): array
{
return [
$this->no++,
$media->name,
$media->company->name,
$media->company->email,
ucfirst($media->type),
ucfirst($media->classification),
$media->address,
get_user_status($media->company->user->status),
get_edit_status($media->edit_status),
Carbon::parse($media->created_at)->locale('id')->translatedFormat('l, d F Y'),
Carbon::parse($media->company->validated_at)->locale('id')->translatedFormat('l, d F Y')
];
}
public function headings(): array
{
return [
['Data Media', '', '', '', '', '', '', '', '', '', '', ''],
['NO', 'Nama Media', 'Nama Perusahaan', 'Email', 'Tipe', 'Klasifikasi', 'Alamat', 'Status', 'Status Edit', 'Tanggal Daftar', 'Tanggal Validasi']
];
}
public function styles(Worksheet $sheet)
{
$sheet->mergeCells('A1:K1'); // A1 sampai D1 digabung
// Set alignment untuk pusat horizontal dan vertikal
$sheet->getStyle('A1:K1')->getAlignment()->setHorizontal('center');
$sheet->getStyle('A1:K1')->getAlignment()->setVertical('center');
$sheet->getColumnDimension('A')->setWidth(7); // Set column A width
$sheet->getColumnDimension('B')->setAutoSize(true);
$sheet->getColumnDimension('C')->setAutoSize(true);
$sheet->getColumnDimension('D')->setAutoSize(true);
$sheet->getColumnDimension('E')->setAutoSize(true);
$sheet->getColumnDimension('F')->setAutoSize(true);
$sheet->getColumnDimension('G')->setAutoSize(true);
$sheet->getColumnDimension('H')->setAutoSize(true);
$sheet->getColumnDimension('I')->setAutoSize(true);
$sheet->getColumnDimension('J')->setAutoSize(true);
$sheet->getColumnDimension('K')->setAutoSize(true);
// Menambahkan gaya lain jika diperlukan
$sheet->getStyle('A1:K1')->getFont()->setBold(true);
$sheet->getStyle('A1:K1')->getFont()->setSize(14);
}
}

View File

@ -297,7 +297,7 @@ function display_file($dir, $filename)
if (! function_exists('change_status')) {
function change_status($status, $category) {
if($category === 'company_edit'){
if(in_array($category, ['company_edit', 'media_edit'])){
switch($status){
case '0':
return '1';

View File

@ -762,7 +762,7 @@ public function company(Request $request){
case 0:
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Ada</span>';
case 1:
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showEditDescription('.htmlspecialchars(json_encode(strip_tags($data->edit_description))).')" class="text-light text-decoration-underline">Menunggu</a></span>';
case 2:
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
case 3:
@ -823,9 +823,90 @@ public function company(Request $request){
public function media(Request $request){
if ($request->ajax()) {
$type = $request->input('type', null);
$classification = $request->input('classification', null);
$status = $request->input('status', null);
$edit_status = $request->input('edit_status', null);
$address = $request->input('address', null);
$register_year = $request->input('register_year', null);
$register_month = $request->input('register_month', null);
$register_date = $request->input('register_date', null);
$query = Media::with(['company.user']);
if($type !== 'all'){
if($type === 'online'){
$query->where('type', 'online');
}elseif($type === 'print'){
$query->where('type', 'cetak');
}else if($type === 'radio'){
$query->where('type', 'radio');
}else if($type === 'television'){
$query->where('type', 'televisi');
}
}
if($classification !== 'all'){
if($classification === 'local'){
$query->where('classification', 'lokal');
}elseif($classification === 'regional'){
$query->where('classification', 'regional');
}else if($classification === 'national'){
$query->where('classification', 'nasional');
}
}
if($status !== 'all'){
if($status === 'waiting'){
$query->whereHas('user', function ($q){
$q->where('status', '0');
});
}else if($status === 'accepted'){
$query->whereHas('user', function ($q){
$q->where('status', '1');
});
}else if($status === 'rejected'){
$query->whereHas('user', function ($q){
$q->where('status', '2');
});
}
}
if($edit_status !== 'all'){
if($edit_status === 'no-edit'){
$query->where('edit_status', '0');
}elseif($edit_status === 'waiting'){
$query->where('edit_status', '1');
}else if($edit_status === 'accepted'){
$query->where('edit_status', '2');
}else if($edit_status === 'rejected'){
$query->where('edit_status', '3');
}
}
if ($address) {
$query->where('address', 'LIKE', '%'.$address.'%');
}
if ($register_year) {
$query->whereYear('created_at', $register_year);
}
if ($register_month) {
$monthYear = Carbon::parse($register_month);
$query->whereYear('created_at', $monthYear->year)
->whereMonth('created_at', $monthYear->month);
}
if ($register_date) {
$query->whereDate('created_at', $register_date);
}
$data = $query->get();
$data = Media::with(['company.user'])->get();
// $data = ->get();
return DataTables::of($data)
->addIndexColumn()
@ -858,40 +939,46 @@ public function media(Request $request){
case 1:
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
case 2:
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
case 3:
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->company->rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
default:
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
}
})
->addColumn('status_edit', function ($data) {
switch($data->edit_status){
case 0:
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Ada</span>';
case 1:
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showEditDescription('.htmlspecialchars(json_encode(strip_tags($data->edit_description))).')" class="text-light text-decoration-underline">Menunggu</a></span>';
case 2:
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
case 3:
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->edit_rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
default:
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
}
})
->addColumn('action', function ($data) {
$showUrl = route('dashboard.media.show', ['id' => encrypt_id($data->id)]);
$editUrl = route('dashboard.media.edit', ['id' => encrypt_id($data->id)]);
$showUrl = route('dashboard.media.show', ['id' => encrypt_id($data->user->id), 'type' => 'media']);
$deleteUrl = route('dashboard.media.destroy', ['id' => encrypt_id($data->id)]);
$processEditRequestCompanyUrl = route('dashboard.media.process', ['id' => encrypt_id($data->user->id), 'type' => 'media', 'category' => 'edit-request']);
$dropdown = '<div class="dropdown" style="display:flex; justify-content:center;">
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
<ul class="link-list-opt">
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
if (is_role([1])) {
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
if (is_role([1]) && $data->edit_status === '1' && $data->user->status === '1') {
$dropdown .= '<li><a href="'.$processEditRequestCompanyUrl.'"><em class="icon ni ni-loader"></em><span>Proses peremohonan Edit</span></a></li>';
}
// if (is_role([1])) {
// $dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
// }
if (is_role([1])) {
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';

View File

@ -2,34 +2,272 @@
namespace App\Http\Controllers\Dashboard;
use App\Exports\MediaExport;
use App\Http\Controllers\Controller;
use App\Http\Requests\MediaRequest;
use App\Models\LoginHistory;
use App\Models\Media;
use App\Models\Role;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
class MediaController extends Controller
{
public function index(){
return view('dashboard.media.index',[
'title' => 'Media'
public function index(Request $request){
if(is_role(['1'])){
return view('dashboard.media.admin.index',[
'title' => 'Data Media',
'type' => $request->input('type', null),
'classification' => $request->input('classification', null),
'status' => $request->input('status', null),
'edit_status' => $request->input('edit_status', null),
'address' => $request->input('address', null),
'register_year' => $request->input('register_year', null),
'register_month' => $request->input('register_month', null),
'register_date' => $request->input('register_date', null),
]);
}else if(is_role(['3'])){
$user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id());
$data = [
'title' => 'Data Media',
'user' => $user,
];
return view('dashboard.media.index', $data);
}
}
public function editRequest(){
if(!in_array(Auth::user()->company->media->edit_status, ['0', '2', '3'])){
abort(404);
}
return view('dashboard.media.edit-request', [
'title' => 'Permohonan Ubah Data Media'
]);
}
public function create(){}
public function editRequestAction(Request $request){
if(!in_array(Auth::user()->company->media->edit_status, ['0', '2', '3'])){
abort(404);
}
public function store(){}
public function edit(){}
public function update(){}
public function show($id){
$media = Media::findOrFail(decrypt_id($id));
return view('dashboard.media.show', [
'title' => 'Detail media',
'media' => $media
$validatedData = $request->validate([
'edit_description' => ['required'],
], [
'edit_description.required' => 'Deskripsi wajib diisi.',
]);
if(!Auth::check()){
abort(404);
}
$user = User::with(['company.media'])->findOrFail(Auth::id());
$updatedMedia = $user->company->media->update([
'edit_status' => '1',
'edit_description' => $validatedData['edit_description']
]);
if($updatedMedia){
return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil melakukan permohonan edit data media.');
}else{
return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal melakukan permohonan edit data media.');
}
}
public function edit(){
if(!in_array(Auth::user()->company->media->edit_status, ['2'])){
abort(404);
}
$user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id());
return view('dashboard.media.edit', [
'title' => 'Ubah Data Media',
'user' => $user
]);
}
public function update(MediaRequest $request){
if(!in_array(Auth::user()->company->media->edit_status, ['2'])){
abort(404);
}
$validatedData = $request->validated();
$media = User::with(['company.media'])->findOrFail(Auth::id())->company->media;
$fileFieldMap = [
'media_journalism_organization_doc' => 'journalism_organization_doc',
'media_press_council_certificate_doc' => 'press_council_certificate_doc',
];
$mediaFileNames = [];
foreach ($fileFieldMap as $requestKey => $dbField) {
if ($request->hasFile($requestKey) && filled($validatedData[$requestKey])) {
$mediaFileNames[$requestKey] = store_file($validatedData[$requestKey], '/uploads/media', 'public')['randomFileName'];
} else {
$mediaFileNames[$requestKey] = $media->{$dbField};
}
}
$updatedMedia = $media->update([
'name' => $validatedData['media_name'],
'address' => $validatedData['media_address'],
'link' => $validatedData['media_link'],
'type' => $validatedData['media_type'],
'classification' => $validatedData['media_classification'],
'journalism_organization' => $validatedData['media_journalism_organization'],
'journalism_organization_doc' => $mediaFileNames['media_journalism_organization_doc'],
'press_council_certificate' => $validatedData['media_press_council_certificate'],
'press_council_certificate_doc' => $mediaFileNames['media_press_council_certificate_doc'],
'edit_description' => null,
'edit_status' => '0',
]);
if($updatedMedia){
return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil mengubah data media.');
}else{
return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal mengubah data media.');
}
}
public function show($id, $type){
$user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id));
$data = [
'title' => 'Data Media',
'user' => $user,
'roles' => Role::all(),
'page' => 'media',
'purpose' => 'show',
'idnPage' => 'media',
'route' => 'media',
'type' => $type
];
if($type === 'account'){
return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
return view('dashboard.users.profiles.journalists', $data);
}
}
public function destroy(){}
public function process(Request $request, $id, $type){
$user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id));
if($request->query('category') && !in_array($request->query('category'), ['account-status', 'edit-request'])){
abort(404);
}
$data = [
'title' => 'Data Media',
'user' => $user,
'roles' => Role::all(),
'page' => 'media',
'purpose' => 'process',
'idnPage' => 'media',
'route' => 'media',
'type' => $type,
'category' => $request->query('category', null)
];
if($type === 'account'){
return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
return view('dashboard.users.profiles.journalists', $data);
}
}
public function processAcceptAction(Request $request, $id, $type, $category){
$user = User::with(['company'])->findOrFail(decrypt_id($id));
if(!in_array($category, ['account-status', 'edit-request'])){
abort(404);
}
if(is_role(['1']) && $category === 'edit-request'){
$user->company->media->update([
'edit_status' => '2'
]);
}
return response()->json([
'message' => 'Berhasil menyetujui permohonan edit media.'
]);
}
public function processRejectAction(Request $request, $id, $type, $category){
$user = User::with(['company'])->findOrFail(decrypt_id($id));
if(!in_array($category, ['account-status', 'edit-request'])){
abort(404);
}
if(is_role(['1'])){
$validatedData = $request->validate([
'rejection_reason' => ['required'],
], [
'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]);
if($category === 'edit-request' && $user->company->media->edit_status === '1'){
$user->company->media->update([
'edit_status' => '3',
'edit_rejection_reason' => $validatedData['rejection_reason']
]);
}
}
return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil menolak permohonan edit media.');
}
public function export(Request $request)
{
$type = $request->input('type', null);
$classification = $request->input('classification', null);
$status = $request->input('status', null);
$edit_status = $request->input('edit_status', null);
$address = $request->input('address', null);
$register_year = $request->input('register_year', null);
$register_month = $request->input('register_month', null);
$register_date = $request->input('register_date', null);
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y');
return Excel::download(new MediaExport($type, $classification, $status, $edit_status, $address, $register_year, $register_month, $register_date), 'media-'.$formattedNow.'.xlsx');
}
public function filter(Request $request){
$filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) {
return filled($value);
});
return redirect()->route('dashboard.media.index', $filterField);
}
}

View File

@ -0,0 +1,69 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class MediaRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return Auth::check();
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'media_name' => ['required', 'max:100'],
'media_address' => ['required'],
'media_link' => ['required'],
'media_type' => ['required', 'in:online,cetak,radio,televisi'],
'media_classification' => ['required', 'in:lokal,regional,nasional'],
'media_journalism_organization' => ['nullable', 'max:100'],
'media_journalism_organization_doc' => ['nullable', 'file', 'mimes:pdf', 'max:2048'],
'media_press_council_certificate' => ['nullable', 'max:100'],
'media_press_council_certificate_doc' => ['nullable', 'file', 'mimes:pdf', 'max:2048'],
];
}
public function messages(): array
{
return [
'media_name.required' => 'Nama media wajib diisi.',
'media_name.max' => 'Nama media maksimal 100 karakter.',
'media_address.required' => 'Alamat media wajib diisi.',
'media_link.required' => 'Link media wajib diisi.',
'media_type.required' => 'Tipe media wajib dipilih.',
'media_type.in' => 'Tipe media tidak valid.',
'media_classification.required' => 'Klasifikasi media wajib dipilih.',
'media_classification.in' => 'Klasifikasi media tidak valid.',
'media_journalism_organization.max' => 'Organisasi jurnalistik media maksimal 100 karakter.',
'media_journalism_organization_doc.file' => 'Dokumen organisasi jurnalistik media harus berupa file.',
'media_journalism_organization_doc.mimes' => 'Dokumen organisasi jurnalistik media harus dalam format PDF.',
'media_journalism_organization_doc.max' => 'Ukuran dokumen organisasi jurnalistik media maksimal 2 MB.',
'media_press_council_certificate.max' => 'Sertifikat Dewan Pers media maksimal 100 karakter.',
'media_press_council_certificate_doc.file' => 'Dokumen sertifikat Dewan Pers media harus berupa file.',
'media_press_council_certificate_doc.mimes' => 'Dokumen sertifikat Dewan Pers media harus dalam format PDF.',
'media_press_council_certificate_doc.max' => 'Ukuran dokumen sertifikat Dewan Pers media maksimal 2 MB.',
];
}
protected function prepareForValidation()
{
$this->merge([
'media_journalism_organization' => filled($this->media_journalism_organization) ? $this->media_journalism_organization : null,
'media_journalism_organization_doc' => filled($this->media_journalism_organization_doc) ? $this->media_journalism_organization_doc : null,
'media_press_council_certificate' => filled($this->media_press_council_certificate) ? $this->media_press_council_certificate : null,
'media_press_council_certificate_doc' => filled($this->media_press_council_certificate_doc) ? $this->media_press_council_certificate_doc : null,
]);
}
}

View File

@ -23,9 +23,23 @@ class Media extends Model
'press_council_certificate_doc',
'edit_description',
'edit_status',
'edit_rejection_reason',
'company_id'
];
public function user()
{
return $this->hasOneThrough(
\App\Models\User::class, // model tujuan
\App\Models\Company::class, // model perantara
'id', // foreign key di Company (nyambung ke Media)
'id', // foreign key di User (nyambung ke Company)
'company_id', // foreign key di Media
'user_id' // foreign key di Company
);
}
public function company(){
return $this->belongsTo(Company::class, 'company_id', 'id')->withTrashed();
}

View File

@ -67,6 +67,18 @@ public function company(){
return $this->hasOne(Company::class, 'user_id', 'id')->withTrashed();
}
public function media()
{
return $this->hasOneThrough(
Media::class, // Model tujuan
Company::class, // Model perantara
'user_id', // foreign key di company yang nyambung ke user
'company_id', // foreign key di media yang nyambung ke company
'id', // local key di user
'id' // local key di company
);
}
public function loginHistories(){
return $this->hasMany(LoginHistory::class, 'user_id', 'id');
}

View File

@ -22,8 +22,9 @@ public function up(): void
$table->string('journalism_organization_doc')->nullable();
$table->string('press_council_certificate')->nullable();
$table->string('press_council_certificate_doc')->nullable();
$table->string('edit_desscription')->nullable();
$table->string('edit_description')->nullable();
$table->enum('edit_status', ['0', '1', '2', '3'])->default('0');
$table->text('edit_rejection_reason')->nullable();
$table->unsignedBigInteger('company_id');
$table->foreign('company_id')->references('id')->on('companies');
$table->timestamps();

View File

@ -29,6 +29,8 @@ public function run(): void
'journalism_organization_doc' => $item->doc_of_organization,
'press_council_certificate' => $item->certificate,
'press_council_certificate_doc' => $item->doc_of_certificate,
'edit_description' => $item->description_edit,
'edit_status' => change_status($item->status_edit, 'media_edit') ?? '0',
'company_id' => $item->company,
'created_at' => $item->created_at,
'updated_at' => $item->updated_at,

View File

@ -108,19 +108,19 @@
<div class="form-group">
<label class="form-label" for="register_year">Tahun Daftar</label>
<div class="form-control-wrap">
<input type="number" class="form-control" id="register_year" placeholder="Data perusahaan yang mendaftar pada tahun" name="register_year" value="{{ old('register_year', $register_year ?? '') }}">
<input type="number" class="form-control" id="register_year" placeholder="Perusahaan yang mendaftar pada tahun" name="register_year" value="{{ old('register_year', $register_year ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_month">Bulan Daftar</label>
<div class="form-control-wrap">
<input type="month" class="form-control" id="register_month" placeholder="Data perusahaan yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
<input type="month" class="form-control" id="register_month" placeholder="Perusahaan yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_date">Tanggal Daftar</label>
<div class="form-control-wrap">
<input type="date" class="form-control" id="register_date" placeholder="Data perusahaan yang mendaftar pada tanggal" name="register_date" value="{{ old('register_date', $register_date ?? '') }}">
<input type="date" class="form-control" id="register_date" placeholder="Perusahaan yang mendaftar pada tanggal" name="register_date" value="{{ old('register_date', $register_date ?? '') }}">
</div>
</div>
</div>
@ -183,13 +183,13 @@
<div class="form-group">
<label class="form-label" for="register_month">Bulan Daftar</label>
<div class="form-control-wrap">
<input type="month" class="form-control" id="register_month" placeholder="Data perusahaan yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
<input type="month" class="form-control" id="register_month" placeholder="Perusahaan yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="regitser_date">Tanggal Daftar</label>
<div class="form-control-wrap">
<input type="date" class="form-control" id="regitser_date" placeholder="Data perusahaan yang mendaftar pada tanggal" name="regitser_date" value="{{ old('regitser_date', $regitser_date ?? '') }}">
<input type="date" class="form-control" id="regitser_date" placeholder="Perusahaan yang mendaftar pada tanggal" name="regitser_date" value="{{ old('regitser_date', $regitser_date ?? '') }}">
</div>
</div>
</div>

View File

@ -269,7 +269,7 @@
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$company->rejection_reason ?? '-' !!}
{!!$user->company->rejection_reason ?? '-' !!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->

View File

@ -0,0 +1,256 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'media'])
@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">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">{{$title}}</h3>
</div><!-- .nk-block-head-content -->
<div class="nk-block-head-content">
<div class="toggle-wrap nk-block-tools-toggle">
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
<li>
@if (filled(value: $type) || filled(value: $classification) || filled(value: $status) || filled($edit_status) || filled($address) || filled($register_year) || filled($register_month) || filled($register_date))
<span class="mx-1">
<a href="{{route('dashboard.media.index')}}" class="text-secondary">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" class="icon icon-tabler icons-tabler-filled icon-tabler-xbox-x"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 2c5.523 0 10 4.477 10 10s-4.477 10 -10 10s-10 -4.477 -10 -10s4.477 -10 10 -10m3.6 5.2a1 1 0 0 0 -1.4 .2l-2.2 2.933l-2.2 -2.933a1 1 0 1 0 -1.6 1.2l2.55 3.4l-2.55 3.4a1 1 0 1 0 1.6 1.2l2.2 -2.933l2.2 2.933a1 1 0 0 0 1.6 -1.2l-2.55 -3.4l2.55 -3.4a1 1 0 0 0 -.2 -1.4" /></svg>
</a>
</span>
@endif
<div class="drodown">
<a href="javascript: void(0);" class="btn btn-white btn-dim btn-outline-light" data-bs-toggle="modal" data-bs-target="#modalFilter"><em class="d-none d-sm-inline icon ni ni-filter"></em><span><span class="d-none d-md-inline">Filter</a>
</div>
</li>
<li>
<div class="drodown">
<a href="javascript: void(0);" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#modalExport"><em class="d-none d-sm-inline icon ni ni-upload"></em><span><span class="d-none d-md-inline">Export</a>
</div>
</li>
</ul>
</div>
</div>
</div><!-- .nk-block-head-content -->
</div><!-- .nk-block-between -->
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="table-responsive">
<table class="table table-striped table-bordered nowrap" id="mediaTable" border="1">
<thead>
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama Media</th>
<th>Perusahaan</th>
<th>Jenis</th>
<th>Klasifikasi</th>
<th>Link</th>
<th>Alamat</th>
<th>Status</th>
<th>Status Edit</th>
<th style="width: 10% !important;"></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modalFilter">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Filter</h5>
<a href="javascript:void(0);" class="close" data-bs-dismiss="modal" aria-label="Close">
<em class="icon ni ni-cross"></em>
</a>
</div>
<form action="{{route('dashboard.media.filter')}}" class="form-validate is-alter" method="post">
@csrf
<div class="modal-body">
<div class="form-group">
<label class="form-label">Jenis</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="type">
<option value="all" @selected(isset($type) && $type == 'all')>Semua</option>
<option value="online" @selected(isset($type) && $type == 'online')>Online</option>
<option value="print" @selected(isset($type) && $type == 'print')>Cetak</option>
<option value="radio" @selected(isset($type) && $type == 'radio')>Radio</option>
<option value="tevelision" @selected(isset($type) && $type == 'television')>Televisi</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Klasifikasi</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="classification">
<option value="all" @selected(isset($type) && $type == 'all')>Semua</option>
<option value="local" @selected(isset($type) && $type == 'local')>Lokal</option>
<option value="regional" @selected(isset($type) && $type == 'regional')>Regional</option>
<option value="national" @selected(isset($type) && $type == 'national')>Nasional</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Status</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="status">
<option value="all" @selected(isset($status) && $status == 'all')>Semua</option>
<option value="waiting" @selected(isset($status) && $status == 'waiting')>Menunggu</option>
<option value="accepted" @selected(isset($status) && $status == 'accepted')>Diterima</option>
<option value="rejected" @selected(isset($status) && $status == 'rejected')>Ditolak</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Status Edit</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="edit_status">
<option value="all" @selected(isset($edit_status) && $edit_status == 'all')>Semua</option>
<option value="no-edit" @selected(isset($edit_status) && $edit_status == 'no-edit')>Tidak Ada</option>
<option value="waiting" @selected(isset($edit_status) && $edit_status == 'waiting')>Menunggu</option>
<option value="accepted" @selected(isset($edit_status) && $edit_status == 'accepted')>Diterima</option>
<option value="rejected" @selected(isset($edit_status) && $edit_status == 'rejected')>Ditolak</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="address">Alamat</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="address" placeholder="Media yang beralamat sekitar" name="address" value="{{ old('address', $address ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_year">Tahun Daftar</label>
<div class="form-control-wrap">
<input type="number" class="form-control" id="register_year" placeholder="Media yang mendaftar pada tahun" name="register_year" value="{{ old('register_year', $register_year ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_month">Bulan Daftar</label>
<div class="form-control-wrap">
<input type="month" class="form-control" id="register_month" placeholder="Media yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_date">Tanggal Daftar</label>
<div class="form-control-wrap">
<input type="date" class="form-control" id="register_date" placeholder="Media yang mendaftar pada tanggal" name="register_date" value="{{ old('register_date', $register_date ?? '') }}">
</div>
</div>
</div>
<div class="modal-footer bg-light">
<span class="sub-text">
<button type="submit" class="btn btn-sm btn-primary">Filter</button>
</span>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="modalExport">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Export</h5>
<a href="javascript:void(0);" class="close" data-bs-dismiss="modal" aria-label="Close">
<em class="icon ni ni-cross"></em>
</a>
</div>
<form action="{{route('dashboard.media.export')}}" class="form-validate is-alter" method="post">
@csrf
<div class="modal-body">
<div class="form-group">
<label class="form-label">Jenis</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="type">
<option value="all">Semua</option>
<option value="online">Online</option>
<option value="print">Cetak</option>
<option value="radio">Radio</option>
<option value="television">Televisi</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Klasifikasi</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="classification">
<option value="all">Semua</option>
<option value="local">Lokal</option>
<option value="regional">Regional</option>
<option value="national">Nasional</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Status</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="status">
<option value="all">Semua</option>
<option value="waiting">Menunggu</option>
<option value="accepted">Diterima</option>
<option value="rejected">Ditolak</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label">Status Edit</label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="edit_status">
<option value="all">Semua</option>
<option value="no-edit">Tidak Ada</option>
<option value="waiting">Menunggu</option>
<option value="accepted">Diterima</option>
<option value="rejected">Ditolak</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="address">Alamat</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="address" placeholder="Media yang beralamat sekitar" name="address">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_year">Tahun Daftar</label>
<div class="form-control-wrap">
<input type="number" class="form-control" id="register_year" placeholder="Media yang mendaftar pada tahun" name="register_year">
</div>
</div>
<div class="form-group">
<label class="form-label" for="register_month">Bulan Daftar</label>
<div class="form-control-wrap">
<input type="month" class="form-control" id="register_month" placeholder="Media yang mendaftar pada bulan dan tahun" name="register_month" value="{{ old('register_month', $register_month ?? '') }}">
</div>
</div>
<div class="form-group">
<label class="form-label" for="regitser_date">Tanggal Daftar</label>
<div class="form-control-wrap">
<input type="date" class="form-control" id="regitser_date" placeholder="Media yang mendaftar pada tanggal" name="regitser_date" value="{{ old('regitser_date', $regitser_date ?? '') }}">
</div>
</div>
</div>
<div class="modal-footer bg-light">
<span class="sub-text">
<button type="submit" class="btn btn-sm btn-primary">Export</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer' ,['datatable' => 'media'])

View File

@ -0,0 +1,65 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'media'])
@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 Media</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Buat permohonan untuk mengubah data media Anda di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
<a href="{{route('dashboard.media.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.media.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-warning alert-icon">
<em class="icon ni ni-alert-circle"></em> Mohon berikan <strong>deskripsi permohonan yang jelas dan informatif</strong> untuk menjelaskan alasan perubahan data media serta data apa saja yang ingin diubah. Hal ini akan mempercepat proses validasi oleh tim kami.
</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.media.edit.request.action')}}" method="post" id="myForm">
@csrf
@method('put')
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label text-dark">Deskripsi Permohonan<span class="required-input">*</span></span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="form-control-wrap">
<textarea class="form-control form-control-sm" id="cf-default-textarea" placeholder="Alasan Anda ingin mengubah data media dan data apa saja yang akan diubah" required name="edit_description"></textarea>
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
<div class="mt-2 d-flex justify-content-end p-2 rounded-2" style="background-color: #f4f4f4 !important;">
<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

@ -0,0 +1,208 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'media'])
@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 Media</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Ubah data media Anda di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
<a href="{{route('dashboard.media.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.media.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 media 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.media.update')}}" 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="company_name">Nama Perusahaan</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="company_name" placeholder="Nama perusahaan Anda" value="{{$user->company->name}}" name="company_name" disabled>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="media_name">Nama Media</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="media_name" placeholder="Nama media Anda" value="{{$user->company->media->name}}" name="media_name">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="media_link">Link Media</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="media_link" placeholder="Nama media Anda" value="{{$user->company->media->link}}" name="media_link">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="media_address">Alamat</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="media_address" placeholder="Nama media Anda" value="{{$user->company->media->address}}" name="media_address">
</div>
</div>
</div>
<div class="col-sm-6">
<label class="form-label">Jenis</label>
<ul class="d-flex flex-wrap g-2">
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_type" id="online" value="online" {{ $user->company->media->type == 'online' ? 'checked' : '' }}>
<label class="custom-control-label" for="online">Online</label>
</div>
</li>
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_type" id="cetak" value="cetak" {{ $user->company->media->type === 'cetak' ? 'checked' : '' }}>
<label class="custom-control-label" for="cetak">Cetak</label>
</div>
</li>
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_type" id="radio" value="radio" {{ $user->company->media->type === 'radio' ? 'checked' : '' }}>
<label class="custom-control-label" for="radio">Radio</label>
</div>
</li>
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_type" id="televisi" value="televisi" {{ $user->company->media->type === 'televisi' ? 'checked' : '' }}>
<label class="custom-control-label" for="televisi">Televisi</label>
</div>
</li>
</ul>
@error('media_type')
<span class="auth-validation-error">{{$message}}</span>
@enderror
</div>
<div class="col-sm-6">
<label class="form-label">Klasifikasi</label>
<ul class="d-flex flex-wrap g-2">
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_classification" id="lokal" value="lokal" {{ $user->company->media->classification === 'lokal' ? 'checked' : '' }}>
<label class="custom-control-label" for="lokal">Lokal</label>
</div>
</li>
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_classification" id="regional" value="regional" {{ $user->company->media->classification === 'regional' ? 'checked' : '' }}>
<label class="custom-control-label" for="regional">Regional</label>
</div>
</li>
<li>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="media_classification" id="nasional" value="nasional" {{ $user->company->media->classification === 'nasional' ? 'checked' : '' }}>
<label class="custom-control-label" for="nasional">Nasional</label>
</div>
</li>
</ul>
@error('media_classification')
<span class="auth-validation-error">{{$message}}</span>
@enderror
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="media_journalism_organization">Organisasi Kewartawanan</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="media_journalism_organization" placeholder="Alamat perusahaan Anda" value="{{$user->company->media->director_nik ?? '-'}}" name="media_journalism_organization">
</div>
</div>
<div class="form-group">
<label class="form-label" for="media_press_council_certificate">Sertifikat Dewan Press</label>
<div class="form-control-wrap">
<input type="text" class="form-control" id="media_press_council_certificate" placeholder="Alamat perusahaan Anda" value="{{$user->company->media->deed_incorporation ?? '-'}}" name="media_press_council_certificate">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="form-label" for="media_journalism_organization_doc">
Organisasi Kewartawanan
@if (filled($user->company->media->journalism_organization_doc))
<span>
<a href="{{ filled($user->company->media->journalism_organization_doc) ? asset('storage/uploads/media/'.$user->company->media->journalism_organization_doc) : '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="media_journalism_organization_doc" name="media_journalism_organization_doc">
<label class="form-file-label {{!filled($user->company->media->journalism_organization_doc) ? 'text-danger' : ''}}" for="media_journalism_organization_doc">{{$user->company->media->journalism_organization_doc ?? 'Belum ditambahkan'}}</label>
</div>
</div>
</div>
<div class="form-group">
<label class="form-label" for="media_press_council_certificate_doc">Sertifikat Dewan Press
@if (filled($user->company->media->press_council_certificate_doc))
<span>
<a href="{{ filled($user->company->media->press_council_certificate_doc) ? asset('storage/uploads/media/'.$user->company->media->press_council_certificate_doc) : '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="media_press_council_certificate_doc" name="media_press_council_certificate_doc">
<label class="form-file-label {{!filled($user->company->media->press_council_certificate_doc) ? 'text-danger' : ''}}" for="media_press_council_certificate_doc">{{$user->company->media->press_council_certificate_doc ?? '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.media.edit')}}" 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

@ -7,56 +7,189 @@
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between">
<div class="nk-block-between g-3">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">{{$title}}</h3>
</div><!-- .nk-block-head-content -->
{{-- <div class="nk-block-head-content">
<div class="toggle-wrap nk-block-tools-toggle">
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
<li>
<div class="drodown">
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
<div class="dropdown-menu dropdown-menu-end">
<ul class="link-list-opt no-bdr">
<li><a href="#"><span>Last 30 Days</span></a></li>
<li><a href="#"><span>Last 6 Months</span></a></li>
<li><a href="#"><span>Last 1 Years</span></a></li>
</ul>
</div>
</div>
</li>
<li class="nk-block-tools-opt"><a href="{{route('dashboard.users.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
</ul>
</div>
</div>
</div><!-- .nk-block-head-content --> --}}
</div><!-- .nk-block-between -->
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="table-responsive">
<table class="table table-striped table-bordered nowrap" id="mediaTable" border="1">
<thead>
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama Media</th>
<th>Perusahaan</th>
<th>Jenis</th>
<th>Klasifikasi</th>
<th>Link</th>
<th>Alamat</th>
<th>Status</th>
<th>Status Edit</th>
<th style="width: 10% !important;"></th>
</tr>
</thead>
</table>
<h3 class="nk-block-title page-title">Data Media</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Lihat informasi media Anda di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
@if (in_array($user->company->media->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 Data</span></a>
<a href="javascript:void(0);" class="btn btn-icon d-inline-flex d-sm-none" 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></a>
@elseif(in_array($user->company->media->edit_status, ['0', '3']))
<a href="{{route('dashboard.media.edit.request')}}" class="btn btn-warning d-none d-sm-inline-flex"><em class="icon ni ni-pen2"></em><span>Ubah Data</span></a>
<a href="{{route('dashboard.media.edit.request')}}" class="btn btn-icon btn-warning d-inline-flex d-sm-none"><em class="icon ni ni-pen2"></em></a>
@elseif(in_array($user->company->media->edit_status, ['2']))
<a href="{{route('dashboard.media.edit')}}" class="btn btn-info d-none d-sm-inline-flex"><em class="icon ni ni-pen2"></em><span>Ubah Data</span></a>
<a href="{{route('dashboard.media.edit')}}" class="btn btn-icon btn-info d-inline-flex d-sm-none"><em class="icon ni ni-pen2"></em></a>
@endif
</div>
</div>
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<div class="card-inner">
<div class="nk-block">
<div class="nk-block-head">
<h5 class="title">Informasi Media</h5>
<p>Informasi umum terkait media Anda</p>
</div><!-- .nk-block-head -->
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Media</span>
<span class="profile-ud-value">{{$user->company->media->name ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Jenis</span>
<span class="profile-ud-value">{{ucfirst($user->company->media->type) ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Klasifikasi</span>
<span class="profile-ud-value">{{ucfirst($user->company->media->classification) ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Link</span>
<span class="profile-ud-value">
@if (filled($user->company->media->link))
<a href="{{$user->company->media->link}}" target="_blank">{{$user->company->media->link}}</a>
@else
-
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Alamat</span>
<span class="profile-ud-value">{{$user->company->media->address ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Organisasi Kewartawanan</span>
<span class="profile-ud-value">{{$user->company->media->journalism_organization ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Sertifikat Dewan Press</span>
<span class="profile-ud-value">{{$user->company->media->press_council_certificate ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
<span class="profile-ud-value">
@switch($user->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
@break
@case(2)
<span class="profile-ud-value">
<span class="badge bg-danger">
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
</span>
</span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status Edit</span>
<span class="profile-ud-value">
@switch($user->company->media->edit_status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Ada</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(2)
<span class="profile-ud-value"><span class="badge bg-primary">Diterima</span></span>
@break
@case(3)
<span class="profile-ud-value">
<span class="badge bg-danger">
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->company->media->edit_rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
</span>
</span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
<div class="nk-block">
{{-- <div class="nk-block-head nk-block-head-sm nk-block-between">
<h5 class="title">Admin Note</h5>
</div><!-- .nk-block-head --> --}}
<div id="accordion" class="accordion">
<div class="accordion-item">
<a href="#" class="accordion-head collapsed" data-bs-toggle="collapse" data-bs-target="#journalism-organization-doc">
<h6 class="title">Dokumen Organisasi Kewartawanan</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="journalism-organization-doc" data-bs-parent="#accordion">
<div class="accordion-inner">
{!! display_file('media', $user->company->media->journalism_organization_doc) !!}
</div>
</div>
</div>
<div class="accordion-item">
<a href="#" class="accordion-head collapsed" data-bs-toggle="collapse" data-bs-target="#press-council-certificate-doc">
<h6 class="title">Dokumen Sertifikat Dewan Press</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="press-council-certificate-doc" data-bs-parent="#accordion">
<div class="accordion-inner">
{!! display_file('media', $user->company->press_council_certificate_doc) !!}
</div>
</div>
</div>
</div>
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
@if (filled($user->company->rejection_reason))
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Alasan Penolakan</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$user->company->rejection_reason ?? '-' !!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
@endif
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->
</div>
</div>
</div>
@ -64,4 +197,4 @@
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer' ,['datatable' => 'media'])
@include('partials.dashboard.footer', ['rich_editor' => false])

View File

@ -1,136 +0,0 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'media'])
@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 nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Media</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="nk-block">
{{-- <div class="nk-block-head">
<h5 class="title">Personal Information</h5>
<p>Basic info, like your name and address, that you use on Nio Platform.</p>
</div> --}}
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Media</span>
<span class="profile-ud-value">{{$media->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Jenis</span>
<span class="profile-ud-value">{{ucfirst($media->type)}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Klasifikasi</span>
<span class="profile-ud-value">{{ucfirst($media->classification)}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Alamat</span>
<span class="profile-ud-value">{{$media->address}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Organisasi Kewartawanan</span>
<span class="profile-ud-value">
@if ($media->journalism_organization_doc)
<a href="{{asset('storage/uploads/companies/'. $media->journalism_organization_doc)}}" target="__blank">{{$media->journalism_organization}}</a>
@else
{{$media->journalism_organization ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Sertifikat Dewan Press</span>
<span class="profile-ud-value">
@if ($media->press_council_certificate_doc)
<a href="{{asset('storage/uploads/companies/'. $media->press_council_certificate_doc)}}" target="__blank">{{$media->press_council_certificate}}</a>
@else
{{$media->press_council_certificate ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
@switch($media->company->user->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
@break
@case(2)
<span class="profile-ud-value"><span class="badge bg-danger">Ditolak</span></span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
{{-- @if (filled($media->rejection_reason))
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Alasan Penolakan</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$company->rejection_reason ?? '-' !!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
@endif --}}
{{-- <div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Konten</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$mediaMonitoring->content!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block --> --}}
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.media.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
{{-- <a href="{{route('dashboard.content.recaps.edit', ['id' => encrypt_id($mediaMonitoring->id)])}}" class="btn btn-warning"><span>Ubah</span></a> --}}
</div><!-- .nk-block -->
</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

@ -47,46 +47,46 @@
</div>
@endif
@if (isset($purpose) && $purpose === 'process' && $page === 'company' && filled($category))
@if ($category === 'account-status' && $user->status === '0')
<div class="mt-2 d-flex justify-content-end p-2 rounded-2" style="background-color: #D4EBF8 !important;">
<a href="javascript:void(0);" class="btn btn-danger mx-1" data-bs-toggle="modal" data-bs-target="#modalForm">Tolak</a>
<a href="javascript:void(0);" class="btn btn-primary mx-1" onclick="statusAction('{{route('dashboard.companies.process.action.accept', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => 'account-status'])}}', 'Apakah Anda yakin ingin menyetujui perusahaan {{$user->company->name}}?', 'Ya, Setujui')">
@if (isset($purpose) && $purpose === 'process' && in_array($page, ['company', 'media']) && filled($category))
@if ($category === 'account-status' && $user->status === '0')
<div class="mt-2 d-flex justify-content-end p-2 rounded-2" style="background-color: #D4EBF8 !important;">
<a href="javascript:void(0);" class="btn btn-danger mx-1" data-bs-toggle="modal" data-bs-target="#modalForm">Tolak</a>
<a href="javascript:void(0);" class="btn btn-primary mx-1" onclick="statusAction('{{route('dashboard.'.$route.'.process.action.accept', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => 'account-status'])}}', 'Apakah Anda yakin ingin menyetujui {{$idnPage}} {{$page === 'company' ? $user->company->name : $user->company->media->name}}?', 'Ya, Setujui')">
Terima
</a>
</div>
@elseif($category === 'edit-request' && ($page === 'company' ? $user->company->edit_status === '1' : $user->company->media->edit_status === '1'))
<div class="mt-2 d-flex justify-content-end p-2 rounded-2" style="background-color: #D4EBF8 !important;">
<a href="javascript:void(0);" class="btn btn-danger mx-1" data-bs-toggle="modal" data-bs-target="#modalForm">Tolak</a>
<a href="javascript:void(0);" class="btn btn-primary mx-1" onclick="statusAction('{{route('dashboard.'.$route.'.process.action.accept', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => 'edit-request'])}}', 'Apakah Anda yakin ingin menyetujui permohonan edit {{$idnPage}} {{$page === 'company' ? $user->company->name : $user->company->media->name}}?', 'Ya, Setujui')">
Terima
</a>
</div>
@elseif($category === 'edit-request' && $user->company->edit_status === '1')
<div class="mt-2 d-flex justify-content-end p-2 rounded-2" style="background-color: #D4EBF8 !important;">
<a href="javascript:void(0);" class="btn btn-danger mx-1" data-bs-toggle="modal" data-bs-target="#modalForm">Tolak</a>
<a href="javascript:void(0);" class="btn btn-primary mx-1" onclick="statusAction('{{route('dashboard.companies.process.action.accept', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => 'edit-request'])}}', 'Apakah Anda yakin ingin menyetujui permohonan edit perusahaan {{$user->company->name}}?', 'Ya, Setujui')">
Terima
</a>
</div>
</a>
</div>
@endif
<div class="modal fade" id="modalForm">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tolak {{$category === 'account-status' ? 'Perusahaan' : 'Permohonan Edit'}}</h5>
<a href="#" class="close" data-bs-dismiss="modal" aria-label="Close">
<em class="icon ni ni-cross"></em>
</a>
</div>
<form action="{{route('dashboard.companies.process.action.reject', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => $category])}}" class="form-validate is-alter" id="myForm" method="post">
@csrf
<div class="modal-body">
<div class="form-group">
<label class="form-label" for="rejection_reason">Alasan Menolak<span class="required-input">*</span></label>
<div class="form-control-wrap">
<textarea class="form-control form-control-sm" id="cf-default-textarea" placeholder="Alasan Anda melakukan penolakan" required name="rejection_reason"></textarea>
<div class="modal fade" id="modalForm">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tolak {{$category === 'account-status' ? 'Perusahaan' : 'Permohonan Edit'}}</h5>
<a href="#" class="close" data-bs-dismiss="modal" aria-label="Close">
<em class="icon ni ni-cross"></em>
</a>
</div>
<form action="{{route('dashboard.'.$route.'.process.action.reject', ['id' => encrypt_id($user->id), 'type' => $page, 'category' => $category])}}" class="form-validate is-alter" id="myForm" method="post">
@csrf
<div class="modal-body">
<div class="form-group">
<label class="form-label" for="rejection_reason">Alasan Menolak<span class="required-input">*</span></label>
<div class="form-control-wrap">
<textarea class="form-control form-control-sm" id="cf-default-textarea" placeholder="Alasan Anda melakukan penolakan" required name="rejection_reason"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-sm btn-primary" id="submitButton">Kirim</button>
</div>
</form>
<div class="modal-footer bg-light">
<button type="button" class="btn btn-sm btn-primary" id="submitButton">Kirim</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endif

View File

@ -15,6 +15,7 @@
@include('dashboard.users.profiles.heading')
</div>
</div><!-- .nk-block-head -->
@include('dashboard.users.profiles.request-edit-description')
<div class="nk-block">
<div class="card">
<div class="card-aside-wrap">
@ -45,6 +46,18 @@
<span class="profile-ud-value">{{ucfirst($user->company->media->classification) ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Link</span>
<span class="profile-ud-value">
@if (filled($user->company->media->link))
<a href="{{$user->company->media->link}}" target="_blank">{{$user->company->media->link}}</a>
@else
-
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Alamat</span>
@ -63,6 +76,57 @@
<span class="profile-ud-value">{{$user->company->media->press_council_certificate ?? '-'}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
<span class="profile-ud-value">
@switch($user->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
@break
@case(2)
<span class="profile-ud-value">
<span class="badge bg-danger">
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
</span>
</span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status Edit</span>
<span class="profile-ud-value">
@switch($user->company->media->edit_status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Ada</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(2)
<span class="profile-ud-value"><span class="badge bg-primary">Diterima</span></span>
@break
@case(3)
<span class="profile-ud-value">
<span class="badge bg-danger">
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->company->media->edit_rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
</span>
</span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}

View File

@ -1,4 +1,4 @@
@if (isset($purpose) && $purpose === 'process' && isset($category) && $category === 'edit-request' && $user->company->edit_status === '1')
@if (isset($purpose) && $purpose === 'process' && isset($category) && $category === 'edit-request' && in_array($page, ['company', 'media']) && ($page === 'company' ? $user->company->edit_status === '1' : $user->company->media->edit_status === '1'))
<div class="card card-bordered card-preview mb-2">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
@ -7,12 +7,12 @@
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="form-group">
<label class="form-label" for="rejection_reason">Deskripsi Permohonan</label>
<label class="form-label" for="description">Deskripsi Permohonan</label>
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($user->company->edit_description))
{{ $user->company->edit_description }}
@if ($page === 'company' ? filled($user->company->edit_description) : filled($user->company->media->edit_description))
{{ $page === 'company' ? $user->company->edit_description : $user->company->media->edit_description }}
@else
<div class="d-flex justify-content-center align-items-center">
<span class="text-center"><i>Tidak ada deskripsi atau alasan</i></span>

View File

@ -473,7 +473,20 @@
$('#mediaTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.media.data') }}',
ajax: {
url: '{{ route('dashboard.media.data') }}',
type: 'GET',
data: function(d) {
d.type = '{{ $type }}';
d.classification = '{{ $classification }}';
d.status = '{{ $status }}';
d.edit_status = '{{ $edit_status }}';
d.address = '{{ $address }}';
d.register_year = '{{ $register_year }}';
d.register_month = '{{ $register_month }}';
d.register_date = '{{ $register_date }}';
}
},
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'media_name', name: 'media_name' },

View File

@ -224,6 +224,31 @@ function showDetail(reason) {
}
</script>
<script>
function showEditDescription(reason) {
Swal.fire({
title: 'Alasan Edit', // Judul utama
html: `
<div class="card" style="border: none; border-radius: 12px; padding: 15px; text-align: left; background-color: #f8f9fa; max-width: 500px; margin: auto; box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); margin-top:0.5rem;">
<div class="card-body" style="font-size: 14px; color: #555; line-height: 1.6;">
<p style="margin: 0; padding: 10px 0; font-style: italic; color: #888;">
${reason || "<i>Tidak ada alasan yang diberikan.</i>"}
</p>
</div>
</div>
`,
icon: 'info',
confirmButtonText: 'Tutup',
confirmButtonColor: '#3085d6', // Mengubah warna tombol
padding: '25px', // Padding sekitar modal
backdrop: true, // Mengaktifkan backdrop
customClass: {
popup: 'custom-popup',
}
});
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({

View File

@ -272,14 +272,23 @@
Route::prefix('media')->name('media.')->group(function(){
Route::controller(MediaController::class)->group(function(){
Route::get('/', 'index')->name('index');
Route::get('/{id}/show', 'show')->name('show');
Route::get('/{id}/{type}/show', 'show')->name('show');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::get('/edit/request', 'editRequest')->name('edit.request');
Route::put('/edit/request', 'editRequestAction')->name('edit.request.action');
Route::get('/edit', 'edit')->name('edit');
Route::post('/edit', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
Route::get('/{id}/{type}/process', 'process')->name('process');
Route::put('/{id}/{type}/process/{category}', 'processAcceptAction')->name('process.action.accept');
Route::post('/{id}/{type}/process/{category}', 'processRejectAction')->name('process.action.reject');
Route::post('/export', 'export')->name('export');
Route::post('/filter', 'filter')->name('filter');
});
Route::get('/data', [DatatableController::class, 'media'])->name('data');