refactoring: controller batch 1

This commit is contained in:
myqnrrhmn 2025-05-05 08:08:15 +07:00
parent b6f8848055
commit 00ec6dd4ca
34 changed files with 1401 additions and 982 deletions

View File

@ -20,6 +20,7 @@ class MediaMonitoringExport implements FromCollection, WithHeadings, WithStyles,
protected $news_title; protected $news_title;
protected $channel; protected $channel;
protected $issue_status; protected $issue_status;
protected $keyword;
protected $input_year; protected $input_year;
protected $input_month; protected $input_month;
protected $input_date; protected $input_date;
@ -27,11 +28,12 @@ class MediaMonitoringExport implements FromCollection, WithHeadings, WithStyles,
protected $release_month; protected $release_month;
protected $release_date; protected $release_date;
public function __construct($news_title, $channel, $issue_status, $input_year, $input_month, $input_date, $release_year, $release_month, $release_date) public function __construct($news_title, $channel, $issue_status, $keyword, $input_year, $input_month, $input_date, $release_year, $release_month, $release_date)
{ {
$this->news_title = $news_title; $this->news_title = $news_title;
$this->channel = $channel; $this->channel = $channel;
$this->issue_status = $issue_status; $this->issue_status = $issue_status;
$this->keyword = $keyword;
$this->input_year = $input_year; $this->input_year = $input_year;
$this->input_month = $input_month; $this->input_month = $input_month;
$this->input_date = $input_date; $this->input_date = $input_date;
@ -60,6 +62,10 @@ public function collection()
} }
} }
if($this->keyword){
$query->where('keyword', 'LIKE', '%'. $this->keyword.'%');
}
if ($this->input_year) { if ($this->input_year) {
$query->whereYear('created_at', $this->input_year); $query->whereYear('created_at', $this->input_year);
} }

View File

@ -17,68 +17,121 @@
// } // }
// } // }
// if (! function_exists('store_file')) {
// function store_file($file = null, $path, $disk = null)
// {
// $disk = $disk ?? env('FILESYSTEM_DISK', 'public');
// if (filled($file) && $file instanceof \Illuminate\Http\UploadedFile) {
// $randomFilename = Str::random(35) . time() . '.' . $file->getClientOriginalExtension();
// $originalFileName = Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)) . '.' . $file->getClientOriginalExtension();
// $stored = $file->storeAs($path, $randomFilename, $disk);
// if ($stored) {
// $url = Storage::disk($disk)->url($stored);
// return [
// 'randomFileName' => $randomFilename,
// 'originalFileName' => $originalFileName,
// 'url' => $url,
// 'isSuccess' => true,
// ];
// }
// }
// return [
// 'randomFileName' => null,
// 'originalFileName' => null,
// 'url' => null,
// 'isSuccess' => false,
// ];
// }
// }
if (! function_exists('store_file')) { if (! function_exists('store_file')) {
function store_file($file = null, $path, $disk = null) function store_file($file = null, $path, $disk = 'public')
{ {
$disk = $disk ?? env('FILESYSTEM_DISK', 'public'); if (filled($file) && $file && $file instanceof \Illuminate\Http\UploadedFile) {
$randomFilename = Str::random(35).time().'.'.$file->getClientOriginalExtension();
$originalFileName = Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)).'.'.$file->getClientOriginalExtension();
if (filled($file) && $file instanceof \Illuminate\Http\UploadedFile) { $file->storeAs($path, $randomFilename, $disk);
$randomFilename = Str::random(35) . time() . '.' . $file->getClientOriginalExtension();
$originalFileName = Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)) . '.' . $file->getClientOriginalExtension();
$stored = $file->storeAs($path, $randomFilename, $disk);
if ($stored) {
$url = Storage::disk($disk)->url($stored);
return [ return [
'randomFileName' => $randomFilename, 'randomFileName' => $randomFilename,
'originalFileName' => $originalFileName, 'originalFileName' => $originalFileName,
'url' => $url,
'isSuccess' => true, 'isSuccess' => true,
]; ];
} } else {
}
return [ return [
'randomFileName' => null, 'randomFileName' => null,
'originalFileName' => null, 'originalFileName' => null,
'url' => null,
'isSuccess' => false, 'isSuccess' => false,
]; ];
} }
}
} }
if (!function_exists('display_file')) { // if (!function_exists('display_file')) {
function display_file($dir, $filename, $disk = null, $expirationMinutes = 60): string // function display_file($dir, $filename, $disk = null, $expirationMinutes = 60): string
{ // {
$disk = $disk ?? env('FILESYSTEM_DISK', 'public'); // $disk = $disk ?? env('FILESYSTEM_DISK', 'public');
if (!filled($filename)) { // if (!filled($filename)) {
// return '<p class="text-center">Belum ditambahkan.</p>';
// }
// $path = "uploads/{$dir}/{$filename}";
// try {
// $fileExists = is_file_exists($path, $disk);
// if (!$fileExists) {
// return '<p class="text-center">File tidak ditemukan.</p>';
// }
// if ($disk === 's3') {
// $fileUrl = Storage::disk($disk)->temporaryUrl($path, now()->addMinutes($expirationMinutes));
// } else {
// $fileUrl = Storage::disk($disk)->url($path);
// }
// $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// $mimeType = match ($ext) {
// 'jpg', 'jpeg', 'png', 'gif', 'webp' => 'image/' . $ext,
// 'pdf' => 'application/pdf',
// default => 'unknown',
// };
// if (str_contains($mimeType, 'image')) {
// return "<img src='{$fileUrl}' alt='File Image' class='img-fluid'>";
// } elseif ($mimeType === 'application/pdf') {
// return "<iframe src='{$fileUrl}' width='100%' height='600px'></iframe>";
// }
// return '<p class="text-center">Format file tidak didukung</p>';
// } catch (\Exception $e) {
// return '<p class="text-center text-danger">Terjadi kesalahan saat menampilkan file.</p>';
// }
// }
// }
if (!function_exists('display_file')) {
function display_file($dir, $filename)
{
$path = storage_path("app/public/uploads/{$dir}/{$filename}");
if(!filled($filename)){
return '<p class="text-center">Belum ditambahkan.</p>'; return '<p class="text-center">Belum ditambahkan.</p>';
} }
$path = "uploads/{$dir}/{$filename}"; if (!file_exists($path)) {
try {
$fileExists = is_file_exists($path, $disk);
if (!$fileExists) {
return '<p class="text-center">File tidak ditemukan.</p>'; return '<p class="text-center">File tidak ditemukan.</p>';
} }
if ($disk === 's3') { $mimeType = mime_content_type($path);
$fileUrl = Storage::disk($disk)->temporaryUrl($path, now()->addMinutes($expirationMinutes)); $fileUrl = asset("storage/uploads/{$dir}/{$filename}");
} else {
$fileUrl = Storage::disk($disk)->url($path);
}
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
$mimeType = match ($ext) {
'jpg', 'jpeg', 'png', 'gif', 'webp' => 'image/' . $ext,
'pdf' => 'application/pdf',
default => 'unknown',
};
if (str_contains($mimeType, 'image')) { if (str_contains($mimeType, 'image')) {
return "<img src='{$fileUrl}' alt='File Image' class='img-fluid'>"; return "<img src='{$fileUrl}' alt='File Image' class='img-fluid'>";
@ -87,40 +140,59 @@ function display_file($dir, $filename, $disk = null, $expirationMinutes = 60): s
} }
return '<p class="text-center">Format file tidak didukung</p>'; return '<p class="text-center">Format file tidak didukung</p>';
} catch (\Exception $e) {
return '<p class="text-center text-danger">Terjadi kesalahan saat menampilkan file.</p>';
}
} }
} }
// if (! function_exists('delete_file')) {
// function delete_file($path, $disk = null): bool
// {
// $disk = $disk ?? env('FILESYSTEM_DISK', 'public');
// try {
// if(is_file_exists($path)){
// return Storage::disk($disk)->delete($path);
// }else{
// return false;
// }
// } catch (\Exception $e) {
// return false;
// }
// }
// }
if (! function_exists('delete_file')) { if (! function_exists('delete_file')) {
function delete_file($path, $disk = null): bool function delete_file($path)
{ {
$disk = $disk ?? env('FILESYSTEM_DISK', 'public'); // Menggunakan public_path untuk file yang berada di dalam storage/public
$fullPath = public_path('storage/' . $path);
try { if (File::exists($fullPath)) {
if(is_file_exists($path)){ File::delete($fullPath);
return Storage::disk($disk)->delete($path); return true;
}else{
return false;
} }
} catch (\Exception $e) {
return false; return false;
} }
}
} }
if (!function_exists('is_file_exists')) { // if (!function_exists('is_file_exists')) {
function is_file_exists($path, $disk = null): bool // function is_file_exists($path, $disk = null): bool
{ // {
$disk = $disk ?? env('FILESYSTEM_DISK', 'public'); // $disk = $disk ?? env('FILESYSTEM_DISK', 'public');
try { // try {
$file = Storage::disk($disk)->get($path); // $file = Storage::disk($disk)->get($path);
return !empty($file); // return !empty($file);
} catch (\Throwable $e) { // } catch (\Throwable $e) {
return false; // return false;
} // }
// }
// }
if (! function_exists('is_file_exists')) {
function is_file_exists($path)
{
return File::exists(public_path('storage/' . $path));
} }
} }
@ -159,7 +231,7 @@ function shorten_text($text, $maxLength = 100) {
if (! function_exists('is_role')) { if (! function_exists('is_role')) {
function is_role($roles) { function is_role($roles) {
if (Auth::check()) { if (Auth::check()) {
return in_array(Auth::user()->role_id, (array) $roles); return in_array(Auth::user()->role_id, (array) $roles) || Auth::user()->role_id === '4';
} }
return false; return false;
} }

View File

@ -5,9 +5,7 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\AiringProofThemeRequest; use App\Http\Requests\AiringProofThemeRequest;
use App\Models\AiringProofTheme; use App\Models\AiringProofTheme;
use Illuminate\Http\Request; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
class AiringProofThemeController extends Controller class AiringProofThemeController extends Controller
{ {
@ -26,25 +24,27 @@ public function create(){
public function store(AiringProofThemeRequest $request){ public function store(AiringProofThemeRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{ try{
$slug = $validatedData['slug'];
$existing = AiringProofTheme::withTrashed() $existing = AiringProofTheme::withTrashed()
->where('slug', $validatedData['slug']) ->where('slug', $slug)
->first(); ->first();
if ($existing?->trashed()) { if ($existing?->trashed()) {
return redirect()->back()->with('data-exists', $validatedData['slug']); return redirect()->back()->with('data-exists', $slug);
} elseif ($existing) { } elseif ($existing) {
return redirect()->back() return redirect()->back()
->with('failed-status', 'Tema dengan nama dan tahun tersebut sudah ada.'); ->with('failed-status', 'Tema dengan nama dan tahun tersebut sudah ada.');
} }
$createdAiringProofTheme = AiringProofTheme::create($validatedData); $createdAiringProofTheme = AiringProofTheme::create($validatedData);
return redirect()->route('dashboard.airing.proof.themes.index')->with('success-status', 'Berhasil membuat tema bukti tayang baru.')
->with('new_data', encrypt_id($createdAiringProofTheme->id));
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Airing Proof Themes (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal membuat tema bukti tayang baru.'); return redirect()->back()->with('failed-status', 'Gagal membuat tema bukti tayang baru.');
} }
return redirect()->route('dashboard.airing.proof.themes.index')->with('success-status', 'Berhasil membuat tema bukti tayang baru.')->with('new_data', encrypt_id($createdAiringProofTheme->id));
} }
public function edit($id){ public function edit($id){
@ -62,11 +62,12 @@ public function update(AiringProofThemeRequest $request, $id){
try{ try{
$airingProofTheme = AiringProofTheme::findOrFail(decrypt_id($id)); $airingProofTheme = AiringProofTheme::findOrFail(decrypt_id($id));
$airingProofTheme->update($validatedData); $airingProofTheme->update($validatedData);
return redirect()->route('dashboard.airing.proof.themes.show', ['id' => encrypt_id($airingProofTheme->id)])->with('success-status', 'Berhasil mengubah tema bukti tayang.');
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Airing Proof Themes (update): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah tema bukti tayang.'); return redirect()->back()->with('failed-status', 'Gagal mengubah tema bukti tayang.');
} }
return redirect()->route('dashboard.airing.proof.themes.show', ['id' => encrypt_id($airingProofTheme->id)])->with('success-status', 'Berhasil mengubah tema bukti tayang.');
} }
public function show($id){ public function show($id){
@ -82,16 +83,16 @@ public function destroy($id){
try { try {
$airingProofTheme = AiringProofTheme::findOrFail(decrypt_id($id)); $airingProofTheme = AiringProofTheme::findOrFail(decrypt_id($id));
$airingProofTheme->delete(); $airingProofTheme->delete();
return response()->json(['message' => 'Berhasil menghapus tema bukti tayang.']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("Airing Proof Themes (destroy): ". $e);
return response()->json(['message' => 'Gagal menghapus tema bukti tayang.'], 500); return response()->json(['message' => 'Gagal menghapus tema bukti tayang.'], 500);
} }
return response()->json(['message' => 'Berhasil menghapus tema bukti tayang.']);
} }
public function restore($slug) public function restore($slug)
{ {
try{ try{
$airingProofTheme = AiringProofTheme::withTrashed() $airingProofTheme = AiringProofTheme::withTrashed()
->where('slug', $slug) ->where('slug', $slug)
@ -105,11 +106,12 @@ public function restore($slug)
$airingProofTheme->restore(); $airingProofTheme->restore();
return redirect()->route('dashboard.airing.proof.themes.index')->with('success-status', 'Tema berhasil dipulihkan.'); return redirect()->route('dashboard.airing.proof.themes.index')->with('success-status', 'Tema berhasil dipulihkan.');
} }
return redirect()->back()->with('info-status', 'Tema sudah aktif.');
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Airing Proof Themes (restore): ". $e);
return redirect()->back()->with('failed-status', 'Proses pemulihan gagal.'); return redirect()->back()->with('failed-status', 'Proses pemulihan gagal.');
} }
return redirect()->back()->with('info-status', 'Tema sudah aktif.');
} }
} }

View File

@ -10,16 +10,14 @@
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class AnnouncementController extends Controller class AnnouncementController extends Controller
{ {
public function index(Request $request){ public function index(Request $request){
$category = $request->input('category', 'general');
$data = [ $data = [
'title' => 'Pengumuman', 'title' => 'Pengumuman',
'category' => $category 'category' => $request->input('category', 'general')
]; ];
if(is_role(['1'])){ if(is_role(['1'])){
@ -40,7 +38,6 @@ public function store(AnnouncementRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{ try{
if($request->hasFile('attachment')){ if($request->hasFile('attachment')){
$validatedData['attachment'] = store_file($validatedData['attachment'], '/uploads/announcements')['randomFileName']; $validatedData['attachment'] = store_file($validatedData['attachment'], '/uploads/announcements')['randomFileName'];
} }
@ -49,7 +46,6 @@ public function store(AnnouncementRequest $request){
$announcement = Announcement::create($validatedData); $announcement = Announcement::create($validatedData);
$announcement->users()->attach($validatedData['user_ids']); $announcement->users()->attach($validatedData['user_ids']);
if($announcement->users()->count() < 1){ if($announcement->users()->count() < 1){
throw new \Exception("Data tidak valid."); throw new \Exception("Data tidak valid.");
} }
@ -58,6 +54,7 @@ public function store(AnnouncementRequest $request){
}); });
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Announcements (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal membuat pengumuman baru'); return redirect()->back()->with('failed-status', 'Gagal membuat pengumuman baru');
} }
@ -79,12 +76,11 @@ public function update(AnnouncementRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{ try{
$announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id)); $announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id));
DB::transaction(function () use($request, $validatedData, $announcement){ DB::transaction(function () use($request, $validatedData, $announcement){
if($request->hasFile('attachment')){ if($request->hasFile('attachment')){
$validatedData['attachment'] = store_file($validatedData['attachment'], '/uploads/announcements')['randomFileName']; $validatedData['attachment'] = store_file($validatedData['attachment'], 'uploads/announcements')['randomFileName'];
delete_file('uploads/announcements/'.$announcement->attachment); delete_file('uploads/announcements/'.$announcement->attachment);
}else{ }else{
$validatedData['attachment'] = $announcement->attachment; $validatedData['attachment'] = $announcement->attachment;
@ -100,12 +96,12 @@ public function update(AnnouncementRequest $request, $id){
$announcement->users()->sync($mediaData); $announcement->users()->sync($mediaData);
} }
}); });
return redirect()->back()->with('success-status', 'Berhasil mengubah pengumuman.');
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Announcements (update): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah pengumuman.'); return redirect()->back()->with('failed-status', 'Gagal mengubah pengumuman.');
} }
return redirect()->route('dashboard.announcements.show', ['id' => encrypt_id($announcement->id)])->with('success-status', 'Berhasil mengubah pengumuman.');
} }
public function show($id){ public function show($id){
@ -122,21 +118,21 @@ public function show($id){
public function destroy($id){ public function destroy($id){
try { try {
$announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id)); $announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id));
$announcement->users()->detach(); $announcement->users()->detach();
$announcement->delete(); $announcement->delete();
return response()->json(['message' => 'Berhasil menghapus pengumuman.']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("Announcements (destroy): ". $e);
return response()->json(['message' => 'Gagal menghapus pengumuman.'], 500); return response()->json(['message' => 'Gagal menghapus pengumuman.'], 500);
} }
return response()->json(['message' => 'Berhasil menghapus pengumuman.']);
} }
public function read($id){ public function read($id){
$announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id)); $announcement = Announcement::with(['users'])->findOrFail(decrypt_id($id));
if(!in_array(Auth::id(), $announcement->users->pluck('id')->toArray())){ if(!in_array(Auth::id(), $announcement->users->pluck('id')->toArray())){
abort(404, "Pengumuman tidak ditemukan."); abort(404);
} }
try{ try{
@ -144,6 +140,7 @@ public function read($id){
'status' => '1', 'status' => '1',
]); ]);
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Announcements (read): ". $e);
return redirect()->back()->with('failed-status', 'Gagal membaca pengumuman.'); return redirect()->back()->with('failed-status', 'Gagal membaca pengumuman.');
} }

View File

@ -8,6 +8,7 @@
use Exception; use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class ClassificationController extends Controller class ClassificationController extends Controller
@ -31,13 +32,13 @@ public function store(ClassificationRequest $request){
try{ try{
$createdClassification = Classification::create($validatedData); $createdClassification = Classification::create($validatedData);
}catch (\Exception $e){
Log::error("Classifications (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal membuat klasifikasi baru.');
}
return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil membuat klasifikasi baru.') return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil membuat klasifikasi baru.')
->with('new_data', encrypt_id($createdClassification->id)); ->with('new_data', encrypt_id($createdClassification->id));
}catch (\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal membuat klasifikasi baru.');
}
} }
public function edit($id){ public function edit($id){
@ -56,6 +57,7 @@ public function update(ClassificationRequest $request, $id){
$classification = Classification::findOrFail(decrypt_id($id)); $classification = Classification::findOrFail(decrypt_id($id));
$classification->update($validatedData); $classification->update($validatedData);
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Classifications (update): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi.'); return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi.');
} }
@ -76,20 +78,20 @@ public function destroy($id)
try { try {
$classification = Classification::findOrFail(decrypt_id($id)); $classification = Classification::findOrFail(decrypt_id($id));
$classification->delete(); $classification->delete();
return response()->json([
'status' => 'success',
'message' => 'Berhasil menghapus klasifikasi.',
'id' => encrypt_id($classification->id), // untuk digunakan saat Undo
]);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("Classifications (destroy): ". $e);
return response()->json([ return response()->json([
'status' => 'failed', 'status' => 'failed',
'message' => 'Gagal menghapus klasifikasi.', 'message' => 'Gagal menghapus klasifikasi.',
], 500); ], 500);
} }
}
return response()->json([
'status' => 'success',
'message' => 'Berhasil menghapus klasifikasi.',
'id' => encrypt_id($classification->id),
]);
}
public function restore($id) public function restore($id)
{ {
@ -104,17 +106,18 @@ public function restore($id)
} }
$classification->restore(); $classification->restore();
return response()->json([
'status' => 'success',
'message' => 'Klasifikasi berhasil dikembalikan.',
]);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("Classifications (restore): ". $e);
return response()->json([ return response()->json([
'status' => 'failed', 'status' => 'failed',
'message' => 'Gagal mengembalikan klasifikasi.', 'message' => 'Gagal mengembalikan klasifikasi.',
], 500); ], 500);
} }
return response()->json([
'status' => 'success',
'message' => 'Klasifikasi berhasil dikembalikan.',
]);
} }

View File

@ -14,6 +14,8 @@
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
@ -66,12 +68,13 @@ public function editRequestAction(Request $request){
]); ]);
$user = User::with(['company'])->findOrFail(Auth::id()); $user = User::with(['company'])->findOrFail(Auth::id());
$updatedCompany = $user->company->update([ $user->company->update([
'edit_status' => '1', 'edit_status' => '1',
'edit_description' => $validatedData['edit_description'] 'edit_description' => $validatedData['edit_description']
]); ]);
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Company (editRequestAction): ". $e);
return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal melakukan permohonan edit data perusahaan.'); return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal melakukan permohonan edit data perusahaan.');
} }
@ -123,7 +126,8 @@ public function update(CompanyRequest $request){
} }
} }
$updatedCompany = $company->update([ DB::transaction(function()use($company, $validatedData, $companyFileNames){
$company->update([
'name' => $validatedData['company_name'], 'name' => $validatedData['company_name'],
'email' => $validatedData['company_email'], 'email' => $validatedData['company_email'],
'address' => $validatedData['company_address'], 'address' => $validatedData['company_address'],
@ -147,8 +151,10 @@ public function update(CompanyRequest $request){
'edit_description' => null, 'edit_description' => null,
'edit_status' => '0', 'edit_status' => '0',
]); ]);
});
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Company (update): ". $e);
return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal mengubah data perusahaan.'); return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal mengubah data perusahaan.');
} }
@ -169,17 +175,26 @@ public function show($id, $type){
'type' => $type 'type' => $type
]; ];
if($type === 'account'){ switch($type){
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404);
} }
} }
@ -204,17 +219,27 @@ public function process(Request $request, $id, $type){
'category' => $request->query('category', null) 'category' => $request->query('category', null)
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)
->orderByDesc('id')
->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404);
} }
} }
@ -241,6 +266,7 @@ public function processAcceptAction(Request $request, $id, $type, $category){
} }
} }
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Company (processAcceptAction): ". $e);
return response()->json([ return response()->json([
'failed-status' => 'Gagal menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.' 'failed-status' => 'Gagal menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'
]); ]);
@ -282,6 +308,7 @@ public function processRejectAction(Request $request, $id, $type, $category){
} }
} }
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("Company (processRejectAction): ". $e);
return redirect()->back()->with('faileds-status', 'Gagal melakukan proses.'); return redirect()->back()->with('faileds-status', 'Gagal melakukan proses.');
} }
@ -290,6 +317,8 @@ public function processRejectAction(Request $request, $id, $type, $category){
public function export(Request $request) public function export(Request $request)
{ {
try{
$status = $request->input('status', null); $status = $request->input('status', null);
$edit_status = $request->input('edit_status', null); $edit_status = $request->input('edit_status', null);
$address = $request->input('address', null); $address = $request->input('address', null);
@ -300,26 +329,39 @@ public function export(Request $request)
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y');
return Excel::download(new CompanyExport($status, $edit_status, $address, $register_year, $register_month, $register_date), 'companies-'.$formattedNow.'.xlsx'); return Excel::download(new CompanyExport($status, $edit_status, $address, $register_year, $register_month, $register_date), 'companies-'.$formattedNow.'.xlsx');
}catch(\Exception $e){
Log::error("Company (export): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan export data.');
}
} }
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
return filled($value); return filled($value);
}); });
return redirect()->route('dashboard.companies.index', $filterField); return redirect()->route('dashboard.companies.index', $filterField);
}catch(\Exception $e){
Log::error("Company (filter): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan filter data.');
}
} }
public function printData($id){ public function printData($id){
try{
$company = Company::with(['user.role'])->findOrFail(decrypt_id($id)); $company = Company::with(['user.role'])->findOrFail(decrypt_id($id));
$pdf = Pdf::loadView('dashboard.companies.print', compact('company')); $pdf = Pdf::loadView('dashboard.companies.print', compact('company'));
return $pdf->stream('perusahaan-'.slugify($company->name).'.pdf'); return $pdf->stream('perusahaan-'.slugify($company->name).'.pdf');
}catch(\Exception $e){
Log::error("Company (printData): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan print data.');
}
} }
} }

View File

@ -8,6 +8,7 @@
use App\Models\ContentRecapClassification; use App\Models\ContentRecapClassification;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class ContentRecapClassificationController extends Controller class ContentRecapClassificationController extends Controller
@ -38,10 +39,12 @@ public function store(ContentRecapClassificationRequest $request){
$createdClassification = ContentRecapClassification::create($validatedData); $createdClassification = ContentRecapClassification::create($validatedData);
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("ContentRecapClassifications (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi rekap konten.'); return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi rekap konten.');
} }
return redirect()->route('dashboard.content.recap.classifications.index')->with('success-status', 'Berhasil menambahkan klasifikasi rekap konten.'); return redirect()->route('dashboard.content.recap.classifications.index')->with('success-status', 'Berhasil menambahkan klasifikasi rekap konten.')
->with('new_data', encrypt_id($createdClassification->id));
} }
public function edit($id){ public function edit($id){
@ -58,12 +61,13 @@ public function update(ContentRecapClassificationRequest $request, $id){
try{ try{
$contentRecapClassification = ContentRecapClassification::findOrFail(decrypt_id($id)); $contentRecapClassification = ContentRecapClassification::findOrFail(decrypt_id($id));
$updatedContentRecapClassification = $contentRecapClassification->update($validatedData); $contentRecapClassification->update($validatedData);
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("ContentRecapClassifications (update): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi rekap konten.'); return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi rekap konten.');
} }
return redirect()->back()->with('success-status', 'Berhasil mengubah klasifikasi rekap konten.'); return redirect()->route('dashboard.content.recap.classifications.show', ['id' => encrypt_id($contentRecapClassification->id)])->with('success-status', 'Berhasil mengubah klasifikasi rekap konten.');
} }
public function show($id){ public function show($id){
@ -78,17 +82,18 @@ public function show($id){
public function destroy($id){ public function destroy($id){
try { try {
$contentRecapClassification = ContentRecapClassification::findOrFail(decrypt_id($id)); $contentRecapClassification = ContentRecapClassification::findOrFail(decrypt_id($id));
$contentRecapClassification->delete(); $contentRecapClassification->delete();
return response()->json(['message' => 'Berhasil menghapus klasifikasi rekap konten.']); return response()->json(['message' => 'Berhasil menghapus klasifikasi rekap konten.']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("ContentRecapClassifications (destroy): ". $e);
return response()->json(['message' => 'Gagal menghapus klasifikasi rekap konten.'], 500); return response()->json(['message' => 'Gagal menghapus klasifikasi rekap konten.'], 500);
} }
} }
public function restore($slug) public function restore($slug)
{ {
try{
$recapContentClassification = ContentRecapClassification::withTrashed() $recapContentClassification = ContentRecapClassification::withTrashed()
->where('slug', $slug) ->where('slug', $slug)
->first(); ->first();
@ -103,5 +108,9 @@ public function restore($slug)
} }
return redirect()->back()->with('info-status', 'Klasifikasi sudah aktif.'); return redirect()->back()->with('info-status', 'Klasifikasi sudah aktif.');
}catch(\Exception $e){
Log::error("ContentRecapClassifications (restore): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan proses pemulihan.');
}
} }
} }

View File

@ -11,6 +11,7 @@
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
class ContentRecapController extends Controller class ContentRecapController extends Controller
@ -37,23 +38,22 @@ public function create(){
public function store(ContentRecapRequest $request){ public function store(ContentRecapRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$createdContentRecap = ContentRecap::create($validatedData);
if($request->has('image') && filled($validatedData['image'])){ if($request->has('image') && filled($validatedData['image'])){
$validatedData['image'] = store_file($validatedData['image'], '/uploads/content-recaps')['randomFileName']; $validatedData['image'] = store_file($validatedData['image'], '/uploads/content-recaps')['randomFileName'];
}else{ }else{
$validatedData['image'] = null; $validatedData['image'] = null;
} }
}catch(\Exception $e){
Log::error("ContentRecaps (store): ". $e);
try{ return redirect()->back()->with('failed-status', 'Gagal menambahkan rekap konten.');
$createdContentRecap = ContentRecap::create($validatedData); }
return redirect()->route('dashboard.content.recaps.index')->with('success-status', 'Berhasil menambahkan rekap konten.') return redirect()->route('dashboard.content.recaps.index')->with('success-status', 'Berhasil menambahkan rekap konten.')
->with('new_data', encrypt_id($createdContentRecap->id)); ->with('new_data', encrypt_id($createdContentRecap->id));
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menambahkan rekap konten.');
}
} }
public function edit($id){ public function edit($id){
@ -68,8 +68,8 @@ public function edit($id){
public function update(ContentRecapRequest $request, $id){ public function update(ContentRecapRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$contentRecap = ContentRecap::findOrFail(decrypt_id($id)); $contentRecap = ContentRecap::findOrFail(decrypt_id($id));
if($request->has('image') && filled($validatedData['image'])){ if($request->has('image') && filled($validatedData['image'])){
delete_file('app/public/uploads/content-recaps/'.$contentRecap->image); delete_file('app/public/uploads/content-recaps/'.$contentRecap->image);
@ -78,13 +78,14 @@ public function update(ContentRecapRequest $request, $id){
$validatedData['image'] = $contentRecap->image; $validatedData['image'] = $contentRecap->image;
} }
try{
$contentRecap->update($validatedData); $contentRecap->update($validatedData);
return redirect()->route('dashboard.content.recaps.show', ['id' => encrypt_id($contentRecap->id)])->with('success-status', 'Berhasil mengubah rekap konten.');
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("ContentRecaps (update): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah rekap konten.'); return redirect()->back()->with('failed-status', 'Gagal mengubah rekap konten.');
} }
return redirect()->route('dashboard.content.recaps.show', ['id' => encrypt_id($contentRecap->id)])->with('success-status', 'Berhasil mengubah rekap konten.');
} }
public function show($id){ public function show($id){
@ -101,10 +102,12 @@ public function destroy($id){
$contentRecap = ContentRecap::findOrFail(decrypt_id($id)); $contentRecap = ContentRecap::findOrFail(decrypt_id($id));
$contentRecap->delete(); $contentRecap->delete();
return response()->json(['message' => 'Berhasil menghapus rekap konten.']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("ContentRecaps (destroy): ". $e);
return response()->json(['message' => 'Gagal menghapus rekap konten.'], 500); return response()->json(['message' => 'Gagal menghapus rekap konten.'], 500);
} }
return response()->json(['message' => 'Berhasil menghapus rekap konten.']);
} }
public function checkLink(Request $request) public function checkLink(Request $request)
@ -118,17 +121,24 @@ public function checkLink(Request $request)
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
return filled($value); return filled($value);
}); });
}catch(\Exception $e){
Log::error("ContentRecaps (filter): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan filter data.');
}
return redirect()->route('dashboard.content.recaps.index', $filterField); return redirect()->route('dashboard.content.recaps.index', $filterField);
} }
public function export(Request $request) public function export(Request $request)
{ {
try{
$classification = $request->input('classification', 'all'); $classification = $request->input('classification', 'all');
$channel = $request->input('channel', 'all'); $channel = $request->input('channel', 'all');
$social_media = $request->input('social_media', 'all'); $social_media = $request->input('social_media', 'all');
@ -139,15 +149,23 @@ public function export(Request $request)
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y');
return Excel::download(new ContentRecapExport($classification, $channel, $social_media, $posted_year, $posted_month, $posted_date), 'content-recaps-'.$formattedNow.'.xlsx'); return Excel::download(new ContentRecapExport($classification, $channel, $social_media, $posted_year, $posted_month, $posted_date), 'content-recaps-'.$formattedNow.'.xlsx');
}catch(\Exception $e){
Log::error("ContentRecaps (export): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan export data.');
}
} }
public function printData($id){ public function printData($id){
try{
$contentRecap = ContentRecap::with(['enhancer', 'classification'])->findOrFail(decrypt_id($id)); $contentRecap = ContentRecap::with(['enhancer', 'classification'])->findOrFail(decrypt_id($id));
$pdf = Pdf::loadView('dashboard.content-recaps.print', compact('contentRecap')); $pdf = Pdf::loadView('dashboard.content-recaps.print', compact('contentRecap'));
return $pdf->stream(slugify('rekap konten '. $contentRecap->content_theme).'.pdf'); return $pdf->stream(slugify('rekap konten '. $contentRecap->content_theme).'.pdf');
}catch(\Exception $e){
Log::error("ContentRecaps (printData): ". $e);
return redirect()->back()->with('failed-status', 'Gagal melakukan print data.');
}
} }
} }

View File

@ -9,12 +9,14 @@
use App\Models\CooperationCompletion; use App\Models\CooperationCompletion;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CooperationCompletionController extends Controller class CooperationCompletionController extends Controller
{ {
public function store(CooperationCompletionRequest $request, $id){ public function store(CooperationCompletionRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$validatedData['payment_request_letter'] = store_file($validatedData['payment_request_letter'], 'uploads/cooperation-completions')['randomFileName']; $validatedData['payment_request_letter'] = store_file($validatedData['payment_request_letter'], 'uploads/cooperation-completions')['randomFileName'];
$validatedData['invoice'] = store_file($validatedData['invoice'], 'uploads/cooperation-completions')['randomFileName']; $validatedData['invoice'] = store_file($validatedData['invoice'], 'uploads/cooperation-completions')['randomFileName'];
@ -24,12 +26,13 @@ public function store(CooperationCompletionRequest $request, $id){
$validatedData['order_id'] = decrypt_id($id); $validatedData['order_id'] = decrypt_id($id);
$validatedData['media_id'] = Auth::user()->company->media->id; $validatedData['media_id'] = Auth::user()->company->media->id;
$createdCompletion = CooperationCompletion::create($validatedData); CooperationCompletion::create($validatedData);
if($createdCompletion){ }catch(\Exception $e){
return redirect()->back()->with('success-status', 'Berhasil mengirim formulir.'); Log::error("CooperationCompletions (store): ". $e);
}else{
return redirect()->back()->with('failed-status', 'Gagal mengirim formulir.'); return redirect()->back()->with('failed-status', 'Gagal mengirim formulir.');
} }
return redirect()->back()->with('success-status', 'Berhasil mengirim formulir.');
} }
public function show($mediaOrderId, $id){ public function show($mediaOrderId, $id){
@ -43,9 +46,11 @@ public function show($mediaOrderId, $id){
} }
public function accept($id){ public function accept($id){
try{
$completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id)); $completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id));
$acceptedCompletion = $completion->update([ $completion->update([
'status' => '1' 'status' => '1'
]); ]);
@ -55,16 +60,18 @@ public function accept($id){
'content' => '<p>Admin telah menyetujui laporan formulir penyelesaian kerjasama Anda.</p>', 'content' => '<p>Admin telah menyetujui laporan formulir penyelesaian kerjasama Anda.</p>',
'enhancer_id' => Auth::id() 'enhancer_id' => Auth::id()
]; ];
$createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement = Announcement::create($announcementData);
$createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']); $createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']);
// End Announcements // End Announcements
if ($acceptedCompletion) { }catch(\Exception $e){
return redirect()->back()->with('success-status', 'Berhasil menyetujui penyelesaian kerjasama.'); Log::error("CooperationCompletions (accept): ". $e);
} else {
return redirect()->back()->with('failed-status', 'Gagal menyetujui penyelesaian kerjasama'); return redirect()->back()->with('failed-status', 'Gagal menyetujui penyelesaian kerjasama');
} }
return redirect()->back()->with('success-status', 'Berhasil menyetujui penyelesaian kerjasama.');
} }
public function reject($mediaOrderId, $id){ public function reject($mediaOrderId, $id){
@ -79,6 +86,7 @@ public function reject($mediaOrderId, $id){
public function rejectAction(Request $request, $mediaOrderId, $id){ public function rejectAction(Request $request, $mediaOrderId, $id){
try{
$validatedData = $request->validate([ $validatedData = $request->validate([
'rejection_reason' => ['required'], 'rejection_reason' => ['required'],
], [ ], [
@ -87,7 +95,7 @@ public function rejectAction(Request $request, $mediaOrderId, $id){
$completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id)); $completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id));
$rejectedCompletion = $completion->update([ $completion->update([
'status' => '2', 'status' => '2',
'rejection_reason' => $validatedData['rejection_reason'] 'rejection_reason' => $validatedData['rejection_reason']
]); ]);
@ -102,11 +110,12 @@ public function rejectAction(Request $request, $mediaOrderId, $id){
$createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']); $createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']);
// End Announcements // End Announcements
if ($rejectedCompletion) { }catch(\Exception $e){
return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerjasama.'); Log::error("CooperationCompletions (rejectAction): ". $e);
} else {
return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerjasama'); return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerjasama');
} }
return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerjasama.');
} }
} }

View File

@ -10,6 +10,7 @@
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CooperationRequestController extends Controller class CooperationRequestController extends Controller
{ {
@ -50,6 +51,7 @@ public function mediaProposalShow($id){
public function accept(Request $request, $id){ public function accept(Request $request, $id){
try{
if(!Auth::check() || Auth::user()->role_id !== 3){ if(!Auth::check() || Auth::user()->role_id !== 3){
return abort(403, 'Unauthorized action.'); return abort(403, 'Unauthorized action.');
} }
@ -93,6 +95,10 @@ public function accept(Request $request, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.'); return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.');
} }
}catch(\Exception $e){
Log::error("CooperationRequest (accept): ". $e);
return redirect()->back()->with('failed-status', 'Proses gagal.');
}
} }
@ -114,6 +120,7 @@ public function createProposal($id){
public function storeProposal(JournalistCooperationProposalRequest $request, $id){ public function storeProposal(JournalistCooperationProposalRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$cooperation = Cooperation::findOrFail(decrypt_id($id)); $cooperation = Cooperation::findOrFail(decrypt_id($id));
$validatedData['cooperation_id'] = decrypt_id($id); $validatedData['cooperation_id'] = decrypt_id($id);
$validatedData['media_id'] = Auth::user()->company->media->id; $validatedData['media_id'] = Auth::user()->company->media->id;
@ -137,11 +144,15 @@ public function storeProposal(JournalistCooperationProposalRequest $request, $id
$createdAnnouncement->users()->attach($adminIds); $createdAnnouncement->users()->attach($adminIds);
// End Announcements // End Announcements
if ($createdCooperationProposal->journalists()->count() > 0) { if ($createdCooperationProposal->journalists()->count() <= 0) {
return redirect()->route('dashboard.cooperations.requests.index')->with('success-status', 'Berhasil melakukan pengajuan kerjasama.'); abort(404);
} else { }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan pengajuan kerjasama'); return redirect()->back()->with('failed-status', 'Gagal melakukan pengajuan kerjasama');
} }
return redirect()->route('dashboard.cooperations.requests.index')->with('success-status', 'Berhasil melakukan pengajuan kerjasama.');
} }
public function reject($id){ public function reject($id){
@ -160,6 +171,7 @@ public function reject($id){
public function rejectAction(Request $request, $id){ public function rejectAction(Request $request, $id){
try{
if(!Auth::check() || Auth::user()->role_id !== 3){ if(!Auth::check() || Auth::user()->role_id !== 3){
return abort(403, 'Unauthorized action.'); return abort(403, 'Unauthorized action.');
} }
@ -212,6 +224,10 @@ public function rejectAction(Request $request, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Kerjasama sudah ditolak sebelumnya.'); return redirect()->back()->with('failed-status', 'Kerjasama sudah ditolak sebelumnya.');
} }
}catch(\Exception $e){
Log::error("CooperationRequest (rejectAction): ". $e);
return redirect()->back()->with('failed-status', 'Proses gagal.');
}
} }
@ -229,6 +245,7 @@ public function updateProposal(JournalistCooperationProposalRequest $request, $i
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['media_id'] = Auth::user()->company->media->id; $validatedData['media_id'] = Auth::user()->company->media->id;
try{
$proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($id)); $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($id));
$validatedData['cooperation_id'] = $proposal->cooperation_id; $validatedData['cooperation_id'] = $proposal->cooperation_id;
@ -250,6 +267,10 @@ public function updateProposal(JournalistCooperationProposalRequest $request, $i
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal mengubah pengajuan kerjasama'); return redirect()->back()->with('failed-status', 'Gagal mengubah pengajuan kerjasama');
} }
}catch(\Exception $e){
Log::error("CooperationRequest (updateProposal): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengubah pengajuan kerjasama');
}
} }
@ -262,6 +283,7 @@ public function destroyProposal($id){
return response()->json(['message' => 'Berhasil menghapus ajuan kerjasama.']); return response()->json(['message' => 'Berhasil menghapus ajuan kerjasama.']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("CooperationRequest (destroyProposal): ". $e);
return response()->json(['message' => 'Gagal menghapus ajuan kerjasama.'], 500); return response()->json(['message' => 'Gagal menghapus ajuan kerjasama.'], 500);
} }
} }

View File

@ -7,6 +7,7 @@
use App\Models\GovernmentAgency; use App\Models\GovernmentAgency;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class GovernmentAgencyController extends Controller class GovernmentAgencyController extends Controller
@ -26,7 +27,6 @@ public function create(){
public function store(GovernmentAgencyRequest $request){ public function store(GovernmentAgencyRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{ try{
$createdGovernmentAgency = GovernmentAgency::create($validatedData); $createdGovernmentAgency = GovernmentAgency::create($validatedData);
@ -34,6 +34,7 @@ public function store(GovernmentAgencyRequest $request){
return redirect()->route('dashboard.government.agencies.index')->with('success-status', 'Berhasil membuat OPD baru.') return redirect()->route('dashboard.government.agencies.index')->with('success-status', 'Berhasil membuat OPD baru.')
->with('new_data', encrypt_id($createdGovernmentAgency->id)); ->with('new_data', encrypt_id($createdGovernmentAgency->id));
}catch(\Exception $e){ }catch(\Exception $e){
Log::error("GovernmentAgencies (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal menambahkan OPD'); return redirect()->back()->with('failed-status', 'Gagal menambahkan OPD');
} }
} }
@ -49,17 +50,17 @@ public function edit($id){
public function update(GovernmentAgencyRequest $request, $id){ public function update(GovernmentAgencyRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$governmentAgency = GovernmentAgency::findOrFail(decrypt_id($id)); $governmentAgency = GovernmentAgency::findOrFail(decrypt_id($id));
$updatedGovernmentAgency = $governmentAgency->update($validatedData); $governmentAgency->update($validatedData);
}catch(\Exception $e){
if($updatedGovernmentAgency){ Log::error("GovernmentAgencies (update): ". $e);
return redirect()->route('dashboard.government.agencies.show', ['id' => encrypt_id($governmentAgency->id)])->with('success-status', 'Berhasil mengubah OPD.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mengubah OPD'); return redirect()->back()->with('failed-status', 'Gagal mengubah OPD');
} }
return redirect()->route('dashboard.government.agencies.show', ['id' => encrypt_id($governmentAgency->id)])->with('success-status', 'Berhasil mengubah OPD.');
} }
public function show($id){ public function show($id){
@ -79,6 +80,7 @@ public function destroy($id){
return response()->json(['message' => 'Berhasil menghapus OPD']); return response()->json(['message' => 'Berhasil menghapus OPD']);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("GovernmentAgencies (destroy): ". $e);
return response()->json(['message' => 'Gagal menghapus OPD.'], 500); return response()->json(['message' => 'Gagal menghapus OPD.'], 500);
} }
} }

View File

@ -16,6 +16,7 @@
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
class IssueManagementController extends Controller class IssueManagementController extends Controller
@ -55,21 +56,27 @@ public function create(Request $request){
} }
public function store(IssueManagementRequest $request, $media_monitoring_id) public function store(IssueManagementRequest $request, $media_monitoring_id)
{ {
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$validatedData['media_monitoring_id'] = decrypt_id($media_monitoring_id); $validatedData['media_monitoring_id'] = decrypt_id($media_monitoring_id);
try{
$createdIssueManagement = DB::transaction(function()use($validatedData, $request){
$createdIssueManagement = IssueManagement::create($validatedData); $createdIssueManagement = IssueManagement::create($validatedData);
$createdIssueManagement->governmentAgencies()->attach($request->input('government_agencies')); $createdIssueManagement->governmentAgencies()->attach($request->input('government_agencies'));
return $createdIssueManagement;
});
if ($createdIssueManagement->governmentAgencies()->count() > 0) { if ($createdIssueManagement->governmentAgencies()->count() > 0) {
return redirect()->back()->with('success-status', 'Berhasil menambahkan manajemen isu.'); return redirect()->back()->with('success-status', 'Berhasil menambahkan manajemen isu.');
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal menambahkan manajemen isu'); return redirect()->back()->with('failed-status', 'Gagal menambahkan manajemen isu');
} }
} }catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menambahkan manajemen isu');
}
}
public function edit(Request $request, $id) { public function edit(Request $request, $id) {
@ -92,21 +99,22 @@ public function edit(Request $request, $id) {
public function update(IssueManagementRequest $request, $id){ public function update(IssueManagementRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$issueManagement = IssueManagement::with([ $issueManagement = IssueManagement::with([
'location', 'subLocation', 'classification', 'subClassification', 'mediaMonitoring', 'enhancer' 'location', 'subLocation', 'classification', 'subClassification', 'mediaMonitoring', 'enhancer'
])->findOrFail(decrypt_id($id)); ])->findOrFail(decrypt_id($id));
$validatedData['media_monitoring_id'] = $issueManagement->media_monitoring_id; $validatedData['media_monitoring_id'] = $issueManagement->media_monitoring_id;
$updatedIssueManagement = $issueManagement->update($validatedData); $issueManagement->update($validatedData);
if ($request->has('government_agencies')) { if ($request->has('government_agencies')) {
$issueManagement->governmentAgencies()->sync($validatedData['government_agencies']); $issueManagement->governmentAgencies()->sync($validatedData['government_agencies']);
} }
}catch(\Exception $e){
if ($updatedIssueManagement) {
return redirect()->back()->with('success-status', 'Berhasil mengubah manajemen isu.');
} else {
return redirect()->back()->with('failed-status', 'Gagal mengubah manajemen isu'); return redirect()->back()->with('failed-status', 'Gagal mengubah manajemen isu');
} }
return redirect()->route('dashboard.issue.managements.show', ['id' => encrypt_id($issueManagement->id)])->with('success-status', 'Berhasil mengubah manajemen isu.');
} }
public function show($id){ public function show($id){
@ -150,6 +158,7 @@ public function getSubClassifications($location_id)
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
@ -157,10 +166,15 @@ public function filter(Request $request){
}); });
return redirect()->route('dashboard.issue.managements.index', $filterField); return redirect()->route('dashboard.issue.managements.index', $filterField);
}catch(\Exception $e){
return redirect()->back()->with('status-failed', 'Gagal melakukan proses filter data.');
}
} }
public function export(Request $request) public function export(Request $request)
{ {
try{
$classification = $request->input('classification', null); $classification = $request->input('classification', null);
$sub_classification = $request->input('sub_classification', null); $sub_classification = $request->input('sub_classification', null);
$location = $request->input('location', null); $location = $request->input('location', null);
@ -175,10 +189,15 @@ public function export(Request $request)
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y');
return Excel::download(new IssueManagementExport($classification, $sub_classification, $location, $sub_location, $government_agency, $issue, $response, $year, $month, $date), 'issue-managements-'.$formattedNow.'.xlsx'); return Excel::download(new IssueManagementExport($classification, $sub_classification, $location, $sub_location, $government_agency, $issue, $response, $year, $month, $date), 'issue-managements-'.$formattedNow.'.xlsx');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.');
}
} }
public function printData($id){ public function printData($id){
try{
$issueManagement = IssueManagement::with([ $issueManagement = IssueManagement::with([
'location', 'subLocation', 'classification', 'subClassification', 'governmentAgencies','enhancer', 'mediaMonitoring' 'location', 'subLocation', 'classification', 'subClassification', 'governmentAgencies','enhancer', 'mediaMonitoring'
])->findOrFail(decrypt_id($id)); ])->findOrFail(decrypt_id($id));
@ -187,5 +206,8 @@ public function printData($id){
$pdf = Pdf::loadView('dashboard.issue-managements.print', compact('issueManagement')); $pdf = Pdf::loadView('dashboard.issue-managements.print', compact('issueManagement'));
return $pdf->stream(slugify('manajemen isu '. $issueManagement->mediaMonitoring->code).'.pdf'); return $pdf->stream(slugify('manajemen isu '. $issueManagement->mediaMonitoring->code).'.pdf');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses print data.');
}
} }
} }

View File

@ -26,7 +26,6 @@ public function create(){
public function store(LocationRequest $request){ public function store(LocationRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{ try{
$createdLocation = Location::create($validatedData); $createdLocation = Location::create($validatedData);
@ -49,7 +48,6 @@ public function edit($id){
public function update(LocationRequest $request, $id){ public function update(LocationRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{ try{
$location = Location::findOrFail(decrypt_id($id)); $location = Location::findOrFail(decrypt_id($id));

View File

@ -19,6 +19,7 @@ public function index(Request $request){
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
@ -26,5 +27,9 @@ public function filter(Request $request){
}); });
return redirect()->route('dashboard.login.history.index', $filterField); return redirect()->route('dashboard.login.history.index', $filterField);
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan filtering data.');
}
} }
} }

View File

@ -53,6 +53,7 @@ public function editRequest(){
} }
public function editRequestAction(Request $request){ public function editRequestAction(Request $request){
try{
if(!in_array(Auth::user()->company->media->edit_status, ['0', '3'])){ if(!in_array(Auth::user()->company->media->edit_status, ['0', '3'])){
abort(404); abort(404);
} }
@ -68,16 +69,16 @@ public function editRequestAction(Request $request){
} }
$user = User::with(['company.media'])->findOrFail(Auth::id()); $user = User::with(['company.media'])->findOrFail(Auth::id());
$updatedMedia = $user->company->media->update([ $user->company->media->update([
'edit_status' => '1', 'edit_status' => '1',
'edit_description' => $validatedData['edit_description'] 'edit_description' => $validatedData['edit_description']
]); ]);
}catch(\Exception $e){
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.'); return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal melakukan permohonan edit data media.');
} }
return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil melakukan permohonan edit data media.');
} }
public function edit(){ public function edit(){
@ -94,11 +95,13 @@ public function edit(){
} }
public function update(MediaRequest $request){ public function update(MediaRequest $request){
$validatedData = $request->validated();
try{
if(!in_array(Auth::user()->company->media->edit_status, ['2'])){ if(!in_array(Auth::user()->company->media->edit_status, ['2'])){
abort(404); abort(404);
} }
$validatedData = $request->validated();
$media = User::with(['company.media'])->findOrFail(Auth::id())->company->media; $media = User::with(['company.media'])->findOrFail(Auth::id())->company->media;
@ -130,12 +133,11 @@ public function update(MediaRequest $request){
'edit_description' => null, 'edit_description' => null,
'edit_status' => '0', 'edit_status' => '0',
]); ]);
}catch(\Exception $e){
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.'); return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal mengubah data media.');
} }
return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil mengubah data media.');
} }
public function show($id, $type){ public function show($id, $type){
@ -152,18 +154,29 @@ public function show($id, $type){
'type' => $type 'type' => $type
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)
->orderByDesc('id')
->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404); // optional: menangani type yang tidak dikenal
} }
} }
public function destroy(){} public function destroy(){}
@ -187,17 +200,27 @@ public function process(Request $request, $id, $type){
'category' => $request->query('category', null) 'category' => $request->query('category', null)
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)
->orderByDesc('id')
->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404); // atau bisa redirect atau response lainnya jika $type tidak valid
} }
} }
@ -247,6 +270,7 @@ public function processRejectAction(Request $request, $id, $type, $category){
public function export(Request $request) public function export(Request $request)
{ {
try{
$type = $request->input('type', null); $type = $request->input('type', null);
$classification = $request->input('classification', null); $classification = $request->input('classification', null);
$status = $request->input('status', null); $status = $request->input('status', null);
@ -259,10 +283,14 @@ public function export(Request $request)
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); $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'); return Excel::download(new MediaExport($type, $classification, $status, $edit_status, $address, $register_year, $register_month, $register_date), 'media-'.$formattedNow.'.xlsx');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.');
}
} }
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
@ -270,15 +298,21 @@ public function filter(Request $request){
}); });
return redirect()->route('dashboard.media.index', $filterField); return redirect()->route('dashboard.media.index', $filterField);
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses filter data.');
}
} }
public function printData($id){ public function printData($id){
try{
$media = Media::with(['user.role', 'company'])->findOrFail(decrypt_id($id)); $media = Media::with(['user.role', 'company'])->findOrFail(decrypt_id($id));
$pdf = Pdf::loadView('dashboard.media.print', compact('media')); $pdf = Pdf::loadView('dashboard.media.print', compact('media'));
return $pdf->stream('media-'.slugify($media->name).'.pdf'); return $pdf->stream('media-'.slugify($media->name).'.pdf');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses print data.');
}
} }
} }

View File

@ -11,6 +11,7 @@
use App\Models\MediaOrder; use App\Models\MediaOrder;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class MediaCooperationController extends Controller class MediaCooperationController extends Controller
{ {
@ -29,11 +30,12 @@ public function create(){
public function store(CooperationRequest $request){ public function store(CooperationRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations')['randomFileName']; $validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations')['randomFileName'];
$validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations')['randomFileName']; $validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations')['randomFileName'];
$createdCooperation = DB::transaction(function()use($validatedData){
$createdCooperation = Cooperation::create($validatedData); $createdCooperation = Cooperation::create($validatedData);
$createdCooperation->media()->attach($validatedData['media_ids']); $createdCooperation->media()->attach($validatedData['media_ids']);
@ -57,11 +59,17 @@ public function store(CooperationRequest $request){
$createdAnnouncement->users()->attach($userId, ['category' => 'system']); $createdAnnouncement->users()->attach($userId, ['category' => 'system']);
// End Announcements // End Announcements
return $createdCooperation;
});
if ($createdCooperation->media()->count() > 0) { if ($createdCooperation->media()->count() > 0) {
return redirect()->route('dashboard.cooperations.index')->with('success-status', 'Berhasil menambahkan kerjasama.'); return redirect()->route('dashboard.cooperations.index')->with('success-status', 'Berhasil menambahkan kerjasama.');
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal menambahkan kerjasama'); return redirect()->back()->with('failed-status', 'Gagal menambahkan kerjasama');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menambahkan kerjasama');
}
} }
public function edit($id){ public function edit($id){
@ -76,11 +84,11 @@ public function edit($id){
public function update(CooperationRequest $request, $id){ public function update(CooperationRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); $cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
$oldCooperationName = $cooperation->name; $oldCooperationName = $cooperation->name;
$validatedData['enhancer_id'] = Auth::id();
if($request->hasFile('banner')){ if($request->hasFile('banner')){
delete_file('app/public/uploads/cooperations/'.$cooperation->banner); delete_file('app/public/uploads/cooperations/'.$cooperation->banner);
$validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations')['randomFileName']; $validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations')['randomFileName'];
@ -122,7 +130,9 @@ public function update(CooperationRequest $request, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal mengubah kerjasama'); return redirect()->back()->with('failed-status', 'Gagal mengubah kerjasama');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah kerjasama');
}
} }
@ -154,6 +164,8 @@ public function mediaProposalShow($id, $proposalId){
} }
public function mediaProposalAccept($id, $proposalId){ public function mediaProposalAccept($id, $proposalId){
try{
$proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId));
$acceptedProposal = $proposal->update([ $acceptedProposal = $proposal->update([
@ -176,6 +188,9 @@ public function mediaProposalAccept($id, $proposalId){
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal menyetujui pengajuan kerjasama'); return redirect()->back()->with('failed-status', 'Gagal menyetujui pengajuan kerjasama');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menyetujui pengajuan kerjasama');
}
} }
@ -196,6 +211,7 @@ public function mediaProposalRejectAction(Request $request, $id, $proposalId){
'rejection_reason.required' => 'Alasan penolakan wajib diisi.', 'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]); ]);
try{
$proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId));
$rejectedProposal = $proposal->update([ $rejectedProposal = $proposal->update([
@ -221,6 +237,9 @@ public function mediaProposalRejectAction(Request $request, $id, $proposalId){
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerjasama'); return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerjasama');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerjasama');
}
} }

View File

@ -38,8 +38,8 @@ public function create(){
public function store(MediaMonitoringRequest $request){ public function store(MediaMonitoringRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$latestCode = MediaMonitoring::max('code'); $latestCode = MediaMonitoring::max('code');
$lastNumber = $latestCode ? intval(substr($latestCode, 3)) : 0; $lastNumber = $latestCode ? intval(substr($latestCode, 3)) : 0;
$newNumber = str_pad($lastNumber + 1, 6, '0', STR_PAD_LEFT); $newNumber = str_pad($lastNumber + 1, 6, '0', STR_PAD_LEFT);
@ -48,13 +48,12 @@ public function store(MediaMonitoringRequest $request){
$validatedData['code'] = $code; $validatedData['code'] = $code;
$validatedData['image'] = store_file($validatedData['image'], 'uploads/media-monitorings')['randomFileName']; $validatedData['image'] = store_file($validatedData['image'], 'uploads/media-monitorings')['randomFileName'];
$createMediaMonitoring = MediaMonitoring::create($validatedData); MediaMonitoring::create($validatedData);
}catch(\Exception $e){
if($createMediaMonitoring){
return redirect()->back()->with('success-status', 'Berhasil menambahkan monitoring media.');
}else{
return redirect()->back()->with('failed-status', 'Gagal menambahkan monitoring media.'); return redirect()->back()->with('failed-status', 'Gagal menambahkan monitoring media.');
} }
return redirect()->back()->with('success-status', 'Berhasil menambahkan monitoring media.');
} }
public function edit($id){ public function edit($id){
@ -70,8 +69,8 @@ public function edit($id){
public function update(MediaMonitoringRequest $request, $id){ public function update(MediaMonitoringRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id)); $mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id));
$validatedData['enhancer_id'] = Auth::id();
$validatedData['code'] = $mediaMonitoring->code; $validatedData['code'] = $mediaMonitoring->code;
if($request->has('image')){ if($request->has('image')){
@ -81,13 +80,12 @@ public function update(MediaMonitoringRequest $request, $id){
$validatedData['image'] = $mediaMonitoring->image; $validatedData['image'] = $mediaMonitoring->image;
} }
$updatedMediaMonitoring = $mediaMonitoring->update($validatedData); $mediaMonitoring->update($validatedData);
}catch(\Exception $e){
if($updatedMediaMonitoring){
return redirect()->back()->with('success-status', 'Berhasil mengubah monitoring media.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mengubah monitoring media.'); return redirect()->back()->with('failed-status', 'Gagal mengubah monitoring media.');
} }
return redirect()->route('dashboard.media.monitorings.show', ['id' => encrypt_id($mediaMonitoring->id)])->with('success-status', 'Berhasil mengubah monitoring media.');
} }
public function show($id){ public function show($id){
@ -124,25 +122,28 @@ public function checkLink(Request $request)
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
// if(!$request->has('news_title')){
// unset($filteredRequest['news_title']);
// }
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
return filled($value); return filled($value);
}); });
return redirect()->route('dashboard.media.monitorings.index', $filterField); return redirect()->route('dashboard.media.monitorings.index', $filterField);
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses filter data.');
}
} }
public function export(Request $request) public function export(Request $request)
{ {
try{
$news_title = $request->input('news_title', null); $news_title = $request->input('news_title', null);
$channel = $request->input('channel', 'all'); $channel = $request->input('channel', 'all');
$issue_status = $request->input('issue_status', 'all'); $issue_status = $request->input('issue_status', 'all');
$keywords = $request->input('keywords', 'all'); $keyword = $request->input('keywords', 'all');
$input_year = $request->input('input_year', null); $input_year = $request->input('input_year', null);
$input_month = $request->input('input_month', null); $input_month = $request->input('input_month', null);
$input_date = $request->input('input_date', null); $input_date = $request->input('input_date', null);
@ -152,16 +153,23 @@ public function export(Request $request)
$formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y');
return Excel::download(new MediaMonitoringExport($news_title, $channel, $issue_status, $input_year, $input_month, $input_date, $release_year, $release_month, $release_date), 'media-monitoring-'.$formattedNow.'.xlsx'); return Excel::download(new MediaMonitoringExport($news_title, $channel, $issue_status, $keyword, $input_year, $input_month, $input_date, $release_year, $release_month, $release_date), 'media-monitoring-'.$formattedNow.'.xlsx');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan export data.');
}
} }
public function printData($id){ public function printData($id){
try{
$mediaMonitoring = MediaMonitoring::with(['enhancer', 'issue'])->findOrFail(decrypt_id($id)); $mediaMonitoring = MediaMonitoring::with(['enhancer', 'issue'])->findOrFail(decrypt_id($id));
$pdf = Pdf::loadView('dashboard.media-monitorings.print', compact('mediaMonitoring')); $pdf = Pdf::loadView('dashboard.media-monitorings.print', compact('mediaMonitoring'));
return $pdf->stream(slugify('monitoring media '. $mediaMonitoring->code).'.pdf'); return $pdf->stream(slugify('monitoring media '. $mediaMonitoring->code).'.pdf');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan print data.');
}
} }
} }

View File

@ -11,6 +11,7 @@
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class MediaOrderController extends Controller class MediaOrderController extends Controller
{ {
@ -28,12 +29,14 @@ public function create($id){
public function store(OrderRequest $request, $id){ public function store(OrderRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName']; $validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName'];
$cooperation = Cooperation::findOrFail(decrypt_id($id)); $cooperation = Cooperation::findOrFail(decrypt_id($id));
$validatedData['cooperation_id'] = $cooperation->id; $validatedData['cooperation_id'] = $cooperation->id;
$createdOrder = DB::transaction(function()use($validatedData, $cooperation){
$createdOrder = Order::create($validatedData); $createdOrder = Order::create($validatedData);
$createdOrder->media()->attach($validatedData['media_ids']); $createdOrder->media()->attach($validatedData['media_ids']);
@ -52,11 +55,17 @@ public function store(OrderRequest $request, $id){
$createdAnnouncement->users()->attach($userId, ['category' => 'system']); $createdAnnouncement->users()->attach($userId, ['category' => 'system']);
// End Announcements // End Announcements
return $createdOrder;
});
if ($createdOrder->media()->count() > 0) { if ($createdOrder->media()->count() > 0) {
return redirect()->route('dashboard.cooperations.process', ['id' => encrypt_id($cooperation->id), 'process' => 'media-order'])->with('success-status', 'Berhasil membuat media order.'); return redirect()->route('dashboard.cooperations.process', ['id' => encrypt_id($cooperation->id), 'process' => 'media-order'])->with('success-status', 'Berhasil membuat media order.');
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal membuat media order'); return redirect()->back()->with('failed-status', 'Gagal membuat media order');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal membuat media order');
}
} }
public function edit($id){ public function edit($id){
@ -79,8 +88,8 @@ public function edit($id){
public function update(OrderRequest $request, $id){ public function update(OrderRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{
$mediaOrder = Order::findOrFail(decrypt_id($id)); $mediaOrder = Order::findOrFail(decrypt_id($id));
$validatedData['cooperation_id'] = $mediaOrder->cooperation_id; $validatedData['cooperation_id'] = $mediaOrder->cooperation_id;
@ -104,6 +113,9 @@ public function update(OrderRequest $request, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal mengubah media order'); return redirect()->back()->with('failed-status', 'Gagal mengubah media order');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah media order');
}
} }
public function accept(Request $request, $id){ public function accept(Request $request, $id){
@ -158,6 +170,8 @@ public function reject(Request $request, $id){
'rejection_reason.required' => 'Alasan penolakan wajib diisi.', 'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]); ]);
try{
$order = Order::with('media')->findOrFail(decrypt_id($id)); $order = Order::with('media')->findOrFail(decrypt_id($id));
$mediaOrder = $order->media() $mediaOrder = $order->media()
@ -199,5 +213,8 @@ public function reject(Request $request, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.'); return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menolak media order.');
}
} }
} }

View File

@ -46,7 +46,7 @@ public function store(NewsRequest $request){
if($request->has('image')){ if($request->has('image')){
$validatedData['image'] = store_file($validatedData['image'], '/uploads/news')['randomFileName']; $validatedData['image'] = store_file($validatedData['image'], '/uploads/news')['randomFileName'];
} }
$createdNews = News::create($validatedData); News::create($validatedData);
}catch(\Exception $e){ }catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal membuat berita baru.'); return redirect()->back()->with('failed-status', 'Gagal membuat berita baru.');
} }
@ -104,8 +104,8 @@ public function show($id){
public function destroy($id) public function destroy($id)
{ {
try { try {
DB::transaction(function () use ($id) {
$news = News::findOrFail(decrypt_id($id)); $news = News::findOrFail(decrypt_id($id));
DB::transaction(function () use ($id, $news) {
$newSlug = Str::limit($news->slug . '-deleted-' . now()->timestamp, 191); $newSlug = Str::limit($news->slug . '-deleted-' . now()->timestamp, 191);
@ -128,16 +128,23 @@ public function destroy($id)
public function export(Request $request) public function export(Request $request)
{ {
try{
$category = $request->input('category', 'all'); $category = $request->input('category', 'all');
$year = $request->input('year', null); $year = $request->input('year', null);
$month = $request->input('month', null); $month = $request->input('month', null);
$date = $request->input('date', null); $date = $request->input('date', null);
return Excel::download(new NewsExport($category, $year, $month, $date), 'news.xlsx'); return Excel::download(new NewsExport($category, $year, $month, $date), 'news.xlsx');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.');
}
} }
public function filter(Request $request){ public function filter(Request $request){
try{
$filteredRequest = $request->except('_token'); $filteredRequest = $request->except('_token');
$filterField = array_filter($filteredRequest, function ($value) { $filterField = array_filter($filteredRequest, function ($value) {
@ -145,16 +152,25 @@ public function filter(Request $request){
}); });
return redirect()->route('dashboard.news.index', $filterField); return redirect()->route('dashboard.news.index', $filterField);
}catch(\Exception $e){
return redirect()->back()->with('status-failed', 'Gagal melakukan proses filtering data.');
}
} }
public function printData($slug){ public function printData($slug){
try{
$news = News::where('slug', $slug)->first(); $news = News::where('slug', $slug)->first();
$pdf = Pdf::loadView('dashboard.news.print', compact('news')); $pdf = Pdf::loadView('dashboard.news.print', compact('news'));
return $pdf->stream('berita-'.$news->slug.'.pdf'); return $pdf->stream('berita-'.$news->slug.'.pdf');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal melakukan proses print data.');
}
} }
public function checkLink(Request $request) public function checkLink(Request $request)

View File

@ -20,18 +20,18 @@ public function create($id){
public function store(ReportRequest $request, $id){ public function store(ReportRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$validatedData['media_id'] = Auth::user()->company->media->id; $validatedData['media_id'] = Auth::user()->company->media->id;
$validatedData['order_id'] = decrypt_id($id); $validatedData['order_id'] = decrypt_id($id);
$validatedData['proof'] = store_file($validatedData['proof'], '/uploads/reports')['randomFileName']; $validatedData['proof'] = store_file($validatedData['proof'], '/uploads/reports')['randomFileName'];
$createdReport = Report::create($validatedData); Report::create($validatedData);
}catch(\Exception $e){
if($createdReport){
return redirect()->route('dashboard.cooperations.process', ['id' => $id, 'process' => 'reports'])->with('success-status', 'Berhasil menambahkan laporan.');
}else{
return redirect()->back()->with('failed-status', 'Gagal menambahkan laporan.'); return redirect()->back()->with('failed-status', 'Gagal menambahkan laporan.');
} }
return redirect()->route('dashboard.cooperations.process', ['id' => $id, 'process' => 'reports'])->with('success-status', 'Berhasil menambahkan laporan.');
} }
public function edit($mediaOrderId, $id){ public function edit($mediaOrderId, $id){
@ -50,6 +50,7 @@ public function update(ReportRequest $request, $mediaOrderId, $id){
$validatedData['order_id'] = decrypt_id($mediaOrderId); $validatedData['order_id'] = decrypt_id($mediaOrderId);
$validatedData['status'] = '0'; $validatedData['status'] = '0';
try{
$report = Report::findOrFail(decrypt_id($id)); $report = Report::findOrFail(decrypt_id($id));
if($request->hasFile('image')){ if($request->hasFile('image')){
@ -67,6 +68,9 @@ public function update(ReportRequest $request, $mediaOrderId, $id){
}else{ }else{
return redirect()->back()->with('failed-status', 'Gagal mengubah laporan.'); return redirect()->back()->with('failed-status', 'Gagal mengubah laporan.');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah laporan.');
}
} }
public function show($mediaOrderId, $id){ public function show($mediaOrderId, $id){
@ -120,6 +124,7 @@ public function rejectAction(Request $request, $mediaOrderId, $id){
'rejection_reason.required' => 'Alasan penolakan wajib diisi.', 'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]); ]);
try{
$report = Report::findOrFail(decrypt_id($id)); $report = Report::findOrFail(decrypt_id($id));
$rejectedReport = $report->update([ $rejectedReport = $report->update([
@ -142,6 +147,9 @@ public function rejectAction(Request $request, $mediaOrderId, $id){
} else { } else {
return redirect()->back()->with('failed-status', 'Gagal menolak laporan bukti tayang'); return redirect()->back()->with('failed-status', 'Gagal menolak laporan bukti tayang');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal menolak laporan bukti tayang');
}
} }
public function destroy($id){ public function destroy($id){

View File

@ -18,6 +18,8 @@ public function index(){
public function update(SettingRequest $request) public function update(SettingRequest $request)
{ {
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$settings = app(AppSettings::class); $settings = app(AppSettings::class);
$files = ['app_icon', 'app_logo']; $files = ['app_icon', 'app_logo'];
@ -55,8 +57,10 @@ public function update(SettingRequest $request)
if ($settings->save()) { if ($settings->save()) {
return redirect()->back()->with('success-status', 'Berhasil mengubah informasi aplikasi.'); return redirect()->back()->with('success-status', 'Berhasil mengubah informasi aplikasi.');
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah informasi aplikasi.'); return redirect()->back()->with('failed-status', 'Gagal mengubah informasi aplikasi.');
} }
}
} }

View File

@ -43,7 +43,6 @@ public function create(Request $request){
public function store(SubLocationRequest $request){ public function store(SubLocationRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{ try{
$createdSubLocation = SubLocation::create($validatedData); $createdSubLocation = SubLocation::create($validatedData);
@ -67,7 +66,6 @@ public function edit($id){
public function update(SubLocationRequest $request, $id){ public function update(SubLocationRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
try{ try{
$subLocation = SubLocation::findOrFail(decrypt_id($id)); $subLocation = SubLocation::findOrFail(decrypt_id($id));

View File

@ -19,7 +19,7 @@ class UserController extends Controller
{ {
public function index(Request $request){ public function index(Request $request){
return view('dashboard.users.index', [ return view('dashboard.users.index', [
'title' => 'Pengguna', 'title' => 'Data Pengguna',
'role' => $request->input('role', null), 'role' => $request->input('role', null),
'status' => $request->input('status', null), 'status' => $request->input('status', null),
]); ]);
@ -27,7 +27,7 @@ public function index(Request $request){
public function create(){ public function create(){
return view('dashboard.users.create', [ return view('dashboard.users.create', [
'title' => 'Tambah Pengguna', 'title' => 'Buat Pengguna Baru',
'roles' => Role::all() 'roles' => Role::all()
]); ]);
} }
@ -35,14 +35,13 @@ public function create(){
public function store(UserRequest $request){ public function store(UserRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$createdUser = User::create($validatedData); try{
User::create($validatedData);
if($createdUser){ }catch(\Exception $e){
return redirect()->back()->with('success-status', 'Berhasil menambahkan pengguna.'); return redirect()->back()->with('failed-status', 'Gagal membuat pengguna baru.');
}else{
return redirect()->back()->with('failed-status', 'Gagal menambahkan pengguna.');
} }
return redirect()->back()->with('success-status', 'Berhasil membuat pengguna baru.');
} }
@ -59,20 +58,14 @@ public function edit($id){
public function update(UserRequest $request, $id){ public function update(UserRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
if (isset($validatedData['password']) && !empty($validatedData['password'])) { try{
$validatedData['password'] = $request->input('password');
} else {
unset($validatedData['password']);
}
$user = User::findOrFail(decrypt_id($id)); $user = User::findOrFail(decrypt_id($id));
$updatedUser = $user->update($validatedData); $user->update($validatedData);
}catch(\Exception $e){
if($updatedUser){
return redirect()->back()->with('success-status', 'Berhasil mengubah pengguna.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mengubah pengguna.'); return redirect()->back()->with('failed-status', 'Gagal mengubah pengguna.');
} }
return redirect()->back()->with('success-status', 'Berhasil mengubah pengguna.');
} }
public function show($id, $type){ public function show($id, $type){
@ -86,18 +79,27 @@ public function show($id, $type){
'type' => $type 'type' => $type
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404);
} }
} }
public function resetPassword($id){ public function resetPassword($id){
@ -113,15 +115,15 @@ public function resetPassword($id){
public function resetPasswordAction(ResetPasswordRequest $request, $id){ public function resetPasswordAction(ResetPasswordRequest $request, $id){
$validatedData = $request->validated(); $validatedData = $request->validated();
$updatedUser = User::findOrFail(decrypt_id($id))->update([ try{
User::findOrFail(decrypt_id($id))->update([
'password' => $validatedData['password'] 'password' => $validatedData['password']
]); ]);
}catch(\Exception $e){
if($updatedUser){
return redirect()->back()->with('success-status', 'Berhasil mereset password pengguna.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mereset password pengguna.'); return redirect()->back()->with('failed-status', 'Gagal mereset password pengguna.');
} }
return redirect()->back()->with('success-status', 'Berhasil mereset password pengguna.');
} }
public function destroy($id) public function destroy($id)
@ -165,17 +167,27 @@ public function profile($type){
'type' => $type 'type' => $type
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', Auth::user()->id)->orderByDesc('id')->simplePaginate(20); case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', Auth::user()->id)
->orderByDesc('id')
->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404); // atau bisa redirect atau handling lainnya jika tipe tidak dikenali
} }
} }
@ -202,23 +214,35 @@ public function process($id, $type, $process){
'process' => $process, 'process' => $process,
]; ];
if($type === 'account'){ switch ($type) {
case 'account':
return view('dashboard.users.profiles.account', $data); return view('dashboard.users.profiles.account', $data);
}elseif($type === 'login-activities'){
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); case 'login-activities':
$data['loginActivities'] = LoginHistory::where('user_id', $user->id)
->orderByDesc('id')
->simplePaginate(20);
return view('dashboard.users.profiles.login-activity', $data); return view('dashboard.users.profiles.login-activity', $data);
}elseif($type === 'company'){
case 'company':
return view('dashboard.users.profiles.company', $data); return view('dashboard.users.profiles.company', $data);
}elseif($type === 'media'){
case 'media':
return view('dashboard.users.profiles.media', $data); return view('dashboard.users.profiles.media', $data);
}elseif($type === 'journalists'){
case 'journalists':
return view('dashboard.users.profiles.journalists', $data); return view('dashboard.users.profiles.journalists', $data);
default:
abort(404); // untuk menangani tipe yang tidak dikenal
} }
} }
public function statusAction(Request $request, $id, $action){ public function statusAction(Request $request, $id, $action){
$user = User::findOrFail(decrypt_id($id)); $user = User::findOrFail(decrypt_id($id));
try{
if($user->status === '0' && Auth::check() && is_role(['1'])){ if($user->status === '0' && Auth::check() && is_role(['1'])){
if($action == 'accept'){ if($action == 'accept'){
$user->update([ $user->update([
@ -250,6 +274,9 @@ public function statusAction(Request $request, $id, $action){
} }
} }
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Proses gagal.');
}
} }
@ -265,17 +292,17 @@ public function setting(){
public function settingAction(AccountSettingRequest $request){ public function settingAction(AccountSettingRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
try{
$user = User::findOrFail(Auth::id()); $user = User::findOrFail(Auth::id());
$updatedUser = $user->update([ $user->update([
'name' => $validatedData['name'], 'name' => $validatedData['name'],
'email' => $validatedData['email'], 'email' => $validatedData['email'],
]); ]);
}catch(\Exception $e){
if($updatedUser){
return redirect()->back()->with('success-status', 'Berhasil mengubah data akun.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mengubah data akun.'); return redirect()->back()->with('failed-status', 'Gagal mengubah data akun.');
} }
return redirect()->back()->with('success-status', 'Berhasil mengubah data akun.');
} }
public function changePassword(){ public function changePassword(){
@ -291,15 +318,16 @@ public function changePassword(){
public function changePasswordAction(ChangePasswordRequest $request){ public function changePasswordAction(ChangePasswordRequest $request){
$validatedData = $request->validated(); $validatedData = $request->validated();
$updatedUser = User::findOrFail(Auth::id())->update([ try{
$user = User::findOrFail(Auth::id());
$user->update([
'password' => $validatedData['password'] 'password' => $validatedData['password']
]); ]);
}catch(\Exception $e){
if($updatedUser){
return redirect()->route('dashboard.users.setting')->with('success-status', 'Berhasil mengubah password.');
}else{
return redirect()->back()->with('failed-status', 'Gagal mengubah password.'); return redirect()->back()->with('failed-status', 'Gagal mengubah password.');
} }
return redirect()->route('dashboard.users.setting')->with('success-status', 'Berhasil mengubah password.');
} }
} }

View File

@ -30,6 +30,7 @@ public function rules(): array
'classification_id' => ['required', 'exists:content_recap_classifications,id', 'not_in:placeholder'], 'classification_id' => ['required', 'exists:content_recap_classifications,id', 'not_in:placeholder'],
'social_media' => ['required', 'not_in:placeholder'], 'social_media' => ['required', 'not_in:placeholder'],
'description' => ['nullable'], 'description' => ['nullable'],
'enhancer_id' => ['required'],
]; ];
if($this->isMethod('post')){ if($this->isMethod('post')){
@ -46,6 +47,7 @@ protected function prepareForValidation()
$this->merge([ $this->merge([
'image' => filled($this->image) ? $this->image : null, 'image' => filled($this->image) ? $this->image : null,
'description' => filled($this->description) ? $this->description : null, 'description' => filled($this->description) ? $this->description : null,
'enhancer_id' => Auth::check() ? Auth::id() : null,
]); ]);
} }

View File

@ -30,6 +30,7 @@ public function rules(): array
'media_ids.*' => ['required', 'exists:media,id'], 'media_ids.*' => ['required', 'exists:media,id'],
'banner' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'], 'banner' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'],
'description' => ['required'], 'description' => ['required'],
'enhancer_id' => ['required'],
]; ];
if($this->isMethod('post')){ if($this->isMethod('post')){
@ -41,6 +42,13 @@ public function rules(): array
return $rules; return $rules;
} }
protected function prepareForValidation()
{
$this->merge([
'enhancer_id' => Auth::check() ? Auth::id() : null,
]);
}
public function messages(): array public function messages(): array
{ {
return [ return [

View File

@ -27,6 +27,7 @@ public function rules(): array
'short_name' => ['nullable', 'max:100'], 'short_name' => ['nullable', 'max:100'],
'location' => ['nullable'], 'location' => ['nullable'],
'description' => ['nullable'], 'description' => ['nullable'],
'enhancer_id' => ['required'],
]; ];
} }
@ -36,6 +37,7 @@ protected function prepareForValidation()
'short_name' => filled($this->short_name) ? $this->short_name : null, 'short_name' => filled($this->short_name) ? $this->short_name : null,
'location' => filled($this->location) ? $this->location : null, 'location' => filled($this->location) ? $this->location : null,
'description' => filled($this->description) ? $this->description : null, 'description' => filled($this->description) ? $this->description : null,
'enhancer_id' => Auth::check() ? Auth::id() : null,
]); ]);
} }

View File

@ -32,8 +32,15 @@ public function rules(): array
'description' =>['required'], 'description' =>['required'],
'government_agencies' =>['required', 'array'], 'government_agencies' =>['required', 'array'],
'government_agencies.*' =>['required', 'exists:government_agencies,id'], 'government_agencies.*' =>['required', 'exists:government_agencies,id'],
'enhancer_id' =>['required'],
]; ];
} }
protected function prepareForValidation()
{
$this->merge([
'enhancer_id' => Auth::check() ? Auth::id() : null,
]);
}
public function messages() public function messages()
{ {

View File

@ -25,7 +25,8 @@ public function rules(): array
return [ return [
'name' => ['required', 'max:100'], 'name' => ['required', 'max:100'],
'status' => ['required', 'in:0,1'], 'status' => ['required', 'in:0,1'],
'description' => ['nullable'] 'description' => ['nullable'],
'enhancer_id' => ['required'],
]; ];
} }
@ -33,6 +34,7 @@ protected function prepareForValidation()
{ {
$this->merge([ $this->merge([
'description' => filled($this->description) ? $this->description : null, 'description' => filled($this->description) ? $this->description : null,
'enhancer_id' => Auth::check() ? Auth::id() : null,
]); ]);
} }

View File

@ -35,6 +35,7 @@ public function rules(): array
'keyword' => ['required', 'max:100'], 'keyword' => ['required', 'max:100'],
'quote' => ['nullable'], 'quote' => ['nullable'],
'release_date' => ['required', 'date'], 'release_date' => ['required', 'date'],
'enhancer_id' => ['required'],
]; ];
if($this->isMethod('post')){ if($this->isMethod('post')){
@ -52,6 +53,7 @@ protected function prepareForValidation()
'link' => filled($this->link) ? $this->link : null, 'link' => filled($this->link) ? $this->link : null,
'influencer' => filled($this->influencer) ? $this->influencer : null, 'influencer' => filled($this->influencer) ? $this->influencer : null,
'quote' => filled($this->quote) ? $this->quote : null, 'quote' => filled($this->quote) ? $this->quote : null,
'enhancer_id' => Auth::check() ? Auth::id() : null,
]); ]);
} }

View File

@ -30,6 +30,41 @@ public function rules(): array
'image' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'], 'image' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'],
'required_reports' => ['required', 'numeric', 'min:1', 'max:100'], 'required_reports' => ['required', 'numeric', 'min:1', 'max:100'],
'task_description' => ['required'], 'task_description' => ['required'],
'enhancer_id' => ['required'],
]; ];
} }
public function prepareForValidation(){
$this->merge([
'enhancer_id' => Auth::check() ? Auth::id() : null,
]);
}
public function messages(): array
{
return [
'start_date.required' => 'Tanggal mulai harus diisi.',
'start_date.date' => 'Format tanggal mulai tidak valid.',
'end_date.required' => 'Tanggal selesai harus diisi.',
'end_date.date' => 'Format tanggal selesai tidak valid.',
'media_ids.required' => 'Media harus dipilih.',
'media_ids.array' => 'Format media tidak valid.',
'media_ids.*.required' => 'Media yang dipilih tidak boleh kosong.',
'media_ids.*.exists' => 'Media yang dipilih tidak ditemukan dalam sistem.',
'image.image' => 'File yang diunggah harus berupa gambar.',
'image.mimes' => 'Gambar harus berformat PNG, JPG, atau JPEG.',
'image.max' => 'Ukuran gambar maksimal adalah 2MB.',
'required_reports.required' => 'Jumlah laporan yang dibutuhkan harus diisi.',
'required_reports.numeric' => 'Jumlah laporan harus berupa angka.',
'required_reports.min' => 'Jumlah laporan minimal adalah 1.',
'required_reports.max' => 'Jumlah laporan maksimal adalah 100.',
'task_description.required' => 'Deskripsi tugas harus diisi.',
];
}
} }

View File

@ -26,7 +26,8 @@ public function rules(): array
'name' => ['required', 'max:100'], 'name' => ['required', 'max:100'],
'location_id' => ['required', 'exists:locations,id'], 'location_id' => ['required', 'exists:locations,id'],
'status' => ['required', 'in:0,1'], 'status' => ['required', 'in:0,1'],
'description' => ['nullable'] 'description' => ['nullable'],
'enhancer_id' => ['required'],
]; ];
} }
@ -34,6 +35,7 @@ protected function prepareForValidation()
{ {
$this->merge([ $this->merge([
'description' => filled($this->description) ? $this->description : null, 'description' => filled($this->description) ? $this->description : null,
'enhancer_id' => Auth::check() ? Auth::id() : null,
]); ]);
} }

View File

@ -26,7 +26,7 @@ public function rules(): array
{ {
$rules = [ $rules = [
'name' => ['required', 'max:100'], 'name' => ['required', 'max:100'],
'email' => ['required', 'email', 'max:100'], 'email' => ['required', 'email', 'max:100', 'unique:users,email'],
'role_id' => ['required', 'in:1,2,3,4'], 'role_id' => ['required', 'in:1,2,3,4'],
'status' => ['required', 'in:1,2'], 'status' => ['required', 'in:1,2'],
]; ];
@ -36,11 +36,23 @@ public function rules(): array
->mixedCase() ->mixedCase()
->numbers() ->numbers()
->symbols()]; ->symbols()];
}else if($this->isMethod('put')){
$rules['password'] = ['nullable', 'confirmed', Password::min(8)
->mixedCase()
->numbers()
->symbols()];
} }
return $rules; return $rules;
} }
public function prepareForValidation(){
if (!filled(trim($this->password))) {
$this->request->remove('password');
}
}
public function messages() public function messages()
{ {
return [ return [

View File

@ -32,7 +32,7 @@ public function run(): void
]); ]);
} }
$createdUser = User::create([ User::create([
'name' => 'Administrator', 'name' => 'Administrator',
'email' => 'admin@gmail.com', 'email' => 'admin@gmail.com',
'password' => 'Rahasia123@', 'password' => 'Rahasia123@',
@ -40,6 +40,14 @@ public function run(): void
'role_id' => '1' 'role_id' => '1'
]); ]);
User::create([
'name' => 'Sample',
'email' => 'sample@gmail.com',
'password' => 'Rahasia123@',
'status' => '1',
'role_id' => '1'
]);
User::find(117)->update([ User::find(117)->update([
'password' => 'Rahasia123@' 'password' => 'Rahasia123@'
]); ]);

View File

@ -722,7 +722,6 @@ function ecommerceBarS1(selector, set_data) {
data: ["{{ $facebookMediaMonitoring }}", "{{ $twitterMediaMonitoring }}", "{{ $websiteMediaMonitoring }}", "{{ $youtubeMediaMonitoring }}", "{{ $instagramMediaMonitoring }}", "{{ $tiktokMediaMonitoring }}", "{{ $cetakMediaMonitoring }}"] data: ["{{ $facebookMediaMonitoring }}", "{{ $twitterMediaMonitoring }}", "{{ $websiteMediaMonitoring }}", "{{ $youtubeMediaMonitoring }}", "{{ $instagramMediaMonitoring }}", "{{ $tiktokMediaMonitoring }}", "{{ $cetakMediaMonitoring }}"]
}] }]
}; };
@endif
var mediaOrderStatistics = { var mediaOrderStatistics = {
labels: ["Menunggu", "Diterima", "Ditolak"], labels: ["Menunggu", "Diterima", "Ditolak"],
@ -745,6 +744,7 @@ function ecommerceBarS1(selector, set_data) {
data: ["{{ $facebookContentRecap }}", "{{ $twitterContentRecap }}", "{{ $websiteContentRecap }}", "{{ $youtubeContentRecap }}", "{{ $instagramContentRecap }}", "{{ $tiktokContentRecap }}", "{{ $cetakContentRecap }}"] data: ["{{ $facebookContentRecap }}", "{{ $twitterContentRecap }}", "{{ $websiteContentRecap }}", "{{ $youtubeContentRecap }}", "{{ $instagramContentRecap }}", "{{ $tiktokContentRecap }}", "{{ $cetakContentRecap }}"]
}] }]
}; };
@endif
function ecommerceDoughnutS1(selector, set_data) { function ecommerceDoughnutS1(selector, set_data) {
var $selector = selector ? $(selector) : $('.ecommerce-doughnut-s1'); var $selector = selector ? $(selector) : $('.ecommerce-doughnut-s1');