'Perusahaan', 'status' => $request->input('status', null), 'edit_status' => $request->input('edit_status', null), 'address' => $request->input('address', null), 'register_year' => $request->input('register_year', null), 'register_month' => $request->input('register_month', null), 'register_date' => $request->input('register_date', null), ]); }else if(is_role(['3'])){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id()); $data = [ 'title' => 'Data Perusahaan', 'user' => $user, ]; return view('dashboard.companies.index', $data); } } public function editRequest(){ if(!in_array(Auth::user()->company->edit_status, ['0', '2', '3'])){ abort(404); } return view('dashboard.companies.edit-request', [ 'title' => 'Permohonan Ubah Data Perusahaan' ]); } public function editRequestAction(Request $request){ if(!in_array(Auth::user()->company->edit_status, ['0', '2', '3'])){ abort(404); } $validatedData = $request->validate([ 'edit_description' => ['required'], ], [ 'edit_description.required' => 'Deskripsi wajib diisi.', ]); if(!Auth::check()){ abort(404); } $user = User::with(['company'])->findOrFail(Auth::id()); $updatedCompany = $user->company->update([ 'edit_status' => '1', 'edit_description' => $validatedData['edit_description'] ]); if($updatedCompany){ return redirect()->route('dashboard.companies.index')->with('success-status', 'Berhasil melakukan permohonan edit data perusahaan.'); }else{ return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal melakukan permohonan edit data perusahaan.'); } } public function edit(){ if(!in_array(Auth::user()->company->edit_status, ['2'])){ abort(404); } $user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id()); return view('dashboard.companies.edit', [ 'title' => 'Ubah Data Perusahaan', 'user' => $user ]); } public function update(CompanyRequest $request){ if(!in_array(Auth::user()->company->edit_status, ['2'])){ abort(404); } $validatedData = $request->validated(); $company = User::with(['company'])->findOrFail(Auth::id())->company; $fileFieldMap = [ 'company_director_nik_doc' => 'director_nik_doc', 'company_deed_incorporation_doc' => 'deed_incorporation_doc', 'company_trade_license_doc' => 'trade_license_doc', 'company_tax_id_number_doc' => 'tax_id_number_doc', 'company_taxable_enterprise_doc' => 'taxable_enterprise_doc', 'company_annual_tax_return_doc' => 'annual_tax_return_doc', 'company_domicile_certificate_doc' => 'domicile_certificate_doc', 'company_profile_doc' => 'profile_doc', ]; $companyFileNames = []; foreach ($fileFieldMap as $requestKey => $dbField) { if ($request->hasFile($requestKey) && filled($validatedData[$requestKey])) { $companyFileNames[$requestKey] = store_file($validatedData[$requestKey], '/uploads/companies', 'public')['randomFileName']; } else { $companyFileNames[$requestKey] = $company->{$dbField}; } } $updatedCompany = $company->update([ 'name' => $validatedData['company_name'], 'email' => $validatedData['company_email'], 'address' => $validatedData['company_address'], 'director_name' => $validatedData['company_director_name'], 'director_nik' => $validatedData['company_director_nik'], 'director_nik_doc' => $companyFileNames['company_director_nik_doc'], 'deed_incorporation' => $validatedData['company_deed_incorporation'], 'deed_incorporation_doc' => $companyFileNames['company_deed_incorporation_doc'], 'trade_license' => $validatedData['company_trade_license'], 'trade_license_doc' => $companyFileNames['company_trade_license_doc'], 'tax_id_number' => $validatedData['company_tax_id_number'], 'tax_id_number_doc' => $companyFileNames['company_tax_id_number_doc'], 'taxable_enterprise' => $validatedData['company_taxable_enterprise'], 'taxable_enterprise_doc' => $companyFileNames['company_taxable_enterprise_doc'], 'annual_tax_return' => $validatedData['company_annual_tax_return'], 'annual_tax_return_doc' => $companyFileNames['company_annual_tax_return_doc'], 'domicile_certificate' => $validatedData['company_domicile_certificate'], 'domicile_certificate_doc' => $companyFileNames['company_domicile_certificate_doc'], 'profile' => $validatedData['company_profile'], 'profile_doc' => $companyFileNames['company_profile_doc'], 'edit_description' => null, 'edit_status' => '0', ]); if($updatedCompany){ return redirect()->route('dashboard.companies.index')->with('success-status', 'Berhasil mengubah data perusahaan.'); }else{ return redirect()->route('dashboard.companies.index')->with('failed-status', 'Gagal mengubah data perusahaan.'); } } public function show($id, $type){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); $data = [ 'title' => 'Data Perusahaan', 'user' => $user, 'roles' => Role::all(), 'page' => 'company', 'purpose' => 'show', 'idnPage' => 'perusahaan', 'route' => 'companies', 'type' => $type ]; if($type === 'account'){ return view('dashboard.users.profiles.account', $data); }elseif($type === 'login-activities'){ $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); return view('dashboard.users.profiles.login-activity', $data); }elseif($type === 'company'){ return view('dashboard.users.profiles.company', $data); }elseif($type === 'media'){ return view('dashboard.users.profiles.media', $data); }elseif($type === 'journalists'){ return view('dashboard.users.profiles.journalists', $data); } } public function destroy(){} public function process(Request $request, $id, $type){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); if($request->query('category') && !in_array($request->query('category'), ['account-status', 'edit-request'])){ abort(404); } $data = [ 'title' => 'Data Perusahaan', 'user' => $user, 'roles' => Role::all(), 'page' => 'company', 'purpose' => 'process', 'idnPage' => 'perusahaan', 'route' => 'companies', 'type' => $type, 'category' => $request->query('category', null) ]; if($type === 'account'){ return view('dashboard.users.profiles.account', $data); }elseif($type === 'login-activities'){ $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); return view('dashboard.users.profiles.login-activity', $data); }elseif($type === 'company'){ return view('dashboard.users.profiles.company', $data); }elseif($type === 'media'){ return view('dashboard.users.profiles.media', $data); }elseif($type === 'journalists'){ return view('dashboard.users.profiles.journalists', $data); } } public function processAcceptAction(Request $request, $id, $type, $category){ $user = User::with(['company'])->findOrFail(decrypt_id($id)); if(!in_array($category, ['account-status', 'edit-request'])){ abort(404); } if(is_role(['1']) && in_array($category, ['account-status', 'edit-request'])){ if($category === 'account-status' && $user->status === '0'){ $user->update([ 'status' => '1' ]); }else if($category === 'edit-request' && $user->company->edit_status === '1'){ $user->company->update([ 'edit_status' => '2' ]); } } return response()->json([ 'message' => 'Berhasil menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.' ]); // return redirect()->back()->with('success-status', 'Berhasil menyetujui'.($category === 'edit-request' ? 'permohonan edit' : '').'perusahaan.'); } public function processRejectAction(Request $request, $id, $type, $category){ $user = User::with(['company'])->findOrFail(decrypt_id($id)); if(!in_array($category, ['account-status', 'edit-request'])){ abort(404); } if(is_role(['1']) && in_array($category, ['account-status', 'edit-request'])){ $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); if($category === 'account-status' && $user->status === '0'){ $user->update([ 'status' => '2' ]); $user->company->update([ 'rejection_reason' => $validatedData['rejection_reason'] ]); }else if($category === 'edit-request' && $user->company->edit_status === '1'){ $user->company->update([ 'edit_status' => '3', 'edit_rejection_reason' => $validatedData['rejection_reason'] ]); } } return redirect()->route('dashboard.companies.index')->with('success-status', 'Berhasil menolak'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'); } public function export(Request $request) { $status = $request->input('status', null); $edit_status = $request->input('edit_status', null); $address = $request->input('address', null); $register_year = $request->input('register_year', null); $register_month = $request->input('register_month', null); $register_date = $request->input('register_date', null); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); return Excel::download(new CompanyExport($status, $edit_status, $address, $register_year, $register_month, $register_date), 'companies-'.$formattedNow.'.xlsx'); } public function filter(Request $request){ $filteredRequest = $request->except('_token'); $filterField = array_filter($filteredRequest, function ($value) { return filled($value); }); return redirect()->route('dashboard.companies.index', $filterField); } }