167 lines
6.6 KiB
PHP
167 lines
6.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Requests\LoginRequest;
|
|
use App\Http\Requests\RegisterRequest;
|
|
use App\Models\Company;
|
|
use App\Models\Journalist;
|
|
use App\Models\Media;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AuthController extends Controller
|
|
{
|
|
public function login(){
|
|
return view('auth.login', [
|
|
'title' => 'Masuk'
|
|
]);
|
|
}
|
|
|
|
public function loginAction(LoginRequest $request){
|
|
$validatedData = $request->validated();
|
|
|
|
if(Auth::attempt($validatedData)){
|
|
$request->session()->regenerate();
|
|
return redirect()->intended('/dashboard/overview');
|
|
}else{
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function register(){
|
|
return view('auth.register', [
|
|
'title' => 'Daftar'
|
|
]);
|
|
}
|
|
|
|
public function registerAction(RegisterRequest $request){
|
|
|
|
DB::beginTransaction();
|
|
|
|
try{
|
|
$validatedData = $request->validated();
|
|
|
|
$createdUser = User::create([
|
|
'name' => $validatedData['name'],
|
|
'email' => $validatedData['email'],
|
|
'password' => $validatedData['password'],
|
|
'status' => '0',
|
|
'role_id' => '3',
|
|
]);
|
|
|
|
$companyFiles = [
|
|
'company_director_nik_doc',
|
|
'company_deed_incorporation_doc',
|
|
'company_trade_license_doc',
|
|
'company_tax_id_number_doc',
|
|
'company_taxable_enterprise_doc',
|
|
'company_annual_tax_return_doc',
|
|
'company_domicile_certificate_doc',
|
|
'company_profile_doc',
|
|
'company_cooperation_request_doc',
|
|
];
|
|
|
|
$companyFileNames = [];
|
|
foreach($companyFiles as $file){
|
|
$companyFileNames[$file] = store_file($validatedData[$file], '/uploads/companies', 'public')['randomFileName'];
|
|
}
|
|
|
|
$createdCompany = Company::create([
|
|
'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'],
|
|
'cooperation_request' => $validatedData['company_cooperation_request'],
|
|
'cooperation_request_doc' => $companyFileNames['company_cooperation_request_doc'],
|
|
'user_id' => $createdUser->id,
|
|
]);
|
|
|
|
$mediaFiles = [
|
|
'media_journalism_organization_doc',
|
|
'media_press_council_certificate_doc'
|
|
];
|
|
|
|
$mediaFileNames = [];
|
|
foreach($mediaFiles as $file){
|
|
$mediaFileNames[$file] = store_file($validatedData[$file], '/uploads/media', 'public')['randomFileName'];
|
|
}
|
|
|
|
$createdMedia = Media::create([
|
|
'name' => $validatedData['media_name'],
|
|
'address' => $validatedData['media_address'],
|
|
'link' => $validatedData['media_link'],
|
|
'type' => $validatedData['media_type'],
|
|
'classification' => $validatedData['media_classification'],
|
|
'journalism_organization' => $validatedData['media_journalism_organization'],
|
|
'journalism_organization_doc' => $mediaFileNames['media_journalism_organization_doc'],
|
|
'press_council_certificate' => $validatedData['media_press_council_certificate'],
|
|
'press_council_certificate_doc' => $mediaFileNames['media_press_council_certificate_doc'],
|
|
'company_id' => $createdCompany->id,
|
|
]);
|
|
|
|
$journalistFiles = [
|
|
'journalist_press_card_doc',
|
|
'journalist_ukw_sertificate_doc'
|
|
];
|
|
|
|
$journalistFileNames = [];
|
|
foreach($journalistFiles as $file){
|
|
$journalistFileNames[$file] = store_file($validatedData[$file], '/uploads/journalists', 'public')['randomFileName'];
|
|
}
|
|
|
|
$createdJournalist = Journalist::create([
|
|
'name' => $validatedData['journalist_name'],
|
|
'email' => $validatedData['journalist_email'],
|
|
'phone_number' => $validatedData['journalist_phone_number'],
|
|
'press_card' => $validatedData['journalist_press_card'],
|
|
'press_card_doc' => $journalistFileNames['journalist_press_card_doc'],
|
|
'ukw_sertificate' => $validatedData['journalist_ukw_sertificate'],
|
|
'ukw_sertificate_doc' => $journalistFileNames['journalist_ukw_sertificate_doc'],
|
|
'media_id' => $createdMedia->id,
|
|
]);
|
|
|
|
DB::commit();
|
|
return redirect()->route('auth.register.success');
|
|
|
|
}catch(\Exception $e){
|
|
DB::rollBack();
|
|
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function registerSuccess(){
|
|
return view('auth.register-success', [
|
|
'title' => 'Daftar Berhasil'
|
|
]);
|
|
}
|
|
|
|
public function logout(Request $request){
|
|
Auth::logout();
|
|
|
|
$request->session()->invalidate();
|
|
$request->session()->regenerateToken();
|
|
|
|
return redirect()->route('login');
|
|
}
|
|
}
|