simedkom/app/Http/Controllers/Dashboard/CooperationCompletionController.php

194 lines
7.7 KiB
PHP

<?php
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Http\Requests\CooperationCompletionRequest;
use App\Models\Announcement;
use App\Models\Cooperation;
use App\Models\CooperationCompletion;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CooperationCompletionController extends Controller
{
// Main page: Penyelesaian Kerjasama
public function index(Request $request){
return view('dashboard.cooperation-completions.index', [
'title' => 'Penyelesaian Kerjasama',
'date' => $request->input('date', null),
'month' => $request->input('month', null),
'year' => $request->input('year', null),
]);
}
public function store(CooperationCompletionRequest $request, $id){
$validatedData = $request->validated();
try{
$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['bank_reference'] = store_file($validatedData['bank_reference'], 'uploads/cooperation-completions')['randomFileName'];
$validatedData['electronic_tax_invoice'] = store_file($validatedData['electronic_tax_invoice'], 'uploads/cooperation-completions')['randomFileName'];
if(isset($validatedData['other_document'])){
$validatedData['other_document'] = store_file($validatedData['other_document'], 'uploads/cooperation-completions')['randomFileName'];
}else{
$validatedData['other_document'] = null;
}
$validatedData['order_id'] = decrypt_id($id);
$validatedData['media_id'] = Auth::user()->company->media->id;
CooperationCompletion::create($validatedData);
}catch(\Exception $e){
Log::error("CooperationCompletions (store): ". $e);
return redirect()->back()->with('failed-status', 'Gagal mengirim formulir.');
}
return redirect()->back()->with('success-status', 'Berhasil mengirim formulir.');
}
public function show($mediaOrderId, $id){
$cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id));
return view('dashboard.cooperation-completions.show', [
'title' => 'Detail Penyelesaian Kerjasama',
'cooperationCompletion' => $cooperationCompletion,
'mediaOrderId' => $mediaOrderId
]);
}
public function showIndex($id){
$cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id));
return view('dashboard.cooperation-completions.index.show', [
'title' => 'Detail Penyelesaian Kerjasama',
'cooperationCompletion' => $cooperationCompletion
]);
}
public function processIndex($id){
$cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id));
return view('dashboard.cooperation-completions.index.process', [
'title' => 'Detail Penyelesaian Kerjasama',
'cooperationCompletion' => $cooperationCompletion
]);
}
public function accept($id){
try{
$completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id));
$completion->update([
'status' => '1'
]);
// Announcements
$announcementData = [
'headline' => 'Formulir penyelesaian kerjasama <u>'. $completion->order->cooperation->name .'</u> telah <span class="text-primary">disetujui</span>',
'content' => '<p>Admin telah menyetujui laporan formulir penyelesaian kerjasama Anda.</p>',
'enhancer_id' => Auth::id()
];
$createdAnnouncement = Announcement::create($announcementData);
$createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']);
// End Announcements
}catch(\Exception $e){
Log::error("CooperationCompletions (accept): ". $e);
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){
$cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id));
return view('dashboard.cooperation-completions.reject', [
'title' => 'Tolak Penyelesaian Kerjasama',
'cooperationCompletion' => $cooperationCompletion,
'mediaOrderId' => $mediaOrderId
]);
}
public function rejectAction(Request $request, $mediaOrderId, $id){
try{
$validatedData = $request->validate([
'rejection_reason' => ['required'],
], [
'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]);
$completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id));
$completion->update([
'status' => '2',
'rejection_reason' => $validatedData['rejection_reason']
]);
// Announcements
$announcementData = [
'headline' => 'Formulir penyelesaian kerjasama <u>'. $completion->order->cooperation->name .'</u> telah <span class="text-danger">ditolak</span>',
'content' => '<p>Admin telah menolak laporan formulir penyelesaian kerjasama Anda.</p>',
'enhancer_id' => Auth::id()
];
$createdAnnouncement = Announcement::create($announcementData);
$createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']);
// End Announcements
}catch(\Exception $e){
Log::error("CooperationCompletions (rejectAction): ". $e);
return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerjasama');
}
return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerjasama.');
}
public function rejectActionIndex(Request $request, $id){
try{
$validatedData = $request->validate([
'rejection_reason' => ['required'],
], [
'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]);
$completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id));
$completion->update([
'status' => '2',
'rejection_reason' => $validatedData['rejection_reason']
]);
// Announcements
$announcementData = [
'headline' => 'Formulir penyelesaian kerjasama <u>'. $completion->order->cooperation->name .'</u> telah <span class="text-danger">ditolak</span>',
'content' => '<p>Admin telah menolak laporan formulir penyelesaian kerjasama Anda.</p>',
'enhancer_id' => Auth::id()
];
$createdAnnouncement = Announcement::create($announcementData);
$createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']);
// End Announcements
}catch(\Exception $e){
Log::error("CooperationCompletions (rejectAction): ". $e);
return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerjasama');
}
return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerjasama.');
}
}