File manager - Edit - /var/www/html/homologBancodetalentos/app/Http/Controllers/TalentBank/JobController.php
Back
<?php namespace App\Http\Controllers\TalentBank; use App\Http\Controllers\Controller; use App\Http\Requests\TalentBank\JobRequest; use App\Http\Resources\TalentBank\JobResource; use App\Http\Services\TalentBank\JobService; use App\Models\TalentBank\Candidate; use App\Models\TalentBank\Company; use App\Models\TalentBank\JobListing; use App\Support\TalentBank\Observability; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class JobController extends Controller { private JobService $jobService; public function __construct() { $this->jobService = new JobService(); $this->middleware('auth.permissions:talent-bank-user-company,talent-bank-admin')->only(['store', 'update', 'destroy']); $this->middleware('auth.permission:talent-bank-user-candidate')->only(['storeApplication', 'deleteApplication']); $this->middleware('auth.permission:talent-bank-admin')->only(['indexToAdmin']); } public function index(Request $request) { try { $response = $this->jobService->index($request); return response()->json([ 'data' => $response, 'message' => __('validation.success'), ], JsonResponse::HTTP_OK); } catch (Exception $e) { return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function indexToAdmin(Request $request) { try { $response = $this->jobService->indexToAdmin($request); return response()->json([ 'data' => $response, 'message' => __('validation.success'), ], JsonResponse::HTTP_OK); } catch (Exception $e) { return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function show(JobListing $job) { $response = $this->jobService->show($job); return response()->json([ 'data' => ['job' => new JobResource($response)], 'message' => __('validation.success'), ], JsonResponse::HTTP_OK); } public function store(JobRequest $request) { try { DB::beginTransaction(); $company = $request->talentBankUser; if (! ($company instanceof Company)) { return response()->json([ ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.company')])], ], JsonResponse::HTTP_NOT_FOUND); } $response = $this->jobService->store($request, $company); DB::commit(); Observability::event('job.create.success', [ 'job_id' => $response->id, 'document_masked' => $this->maskDocument((string) $company->cnpj), 'origin' => 'api/talent-bank/job', ]); return response()->json([ 'message' => __('crud.message.insert', ['model' => __('crud.model.talent_bank.job')]), 'job' => new JobResource($response), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); $company = $request->talentBankUser; $doc = ($company instanceof Company) ? (string) $company->cnpj : ''; Observability::event('job.create.failed', [ 'document_masked' => $this->maskDocument($doc), 'origin' => 'api/talent-bank/job', 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function update(JobRequest $request, $job) { $jobId = (int) $job; try { DB::beginTransaction(); $company = $request->talentBankUser; if (! ($company instanceof Company)) { return response()->json([ ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.company')])], ], JsonResponse::HTTP_NOT_FOUND); } $rows = $this->jobService->getByCustom([ ['column' => 'company_id', 'value' => $company->id], ['column' => 'id', 'value' => $jobId], ]); if ($rows->count() == 0) { return response()->json( ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.job')])], JsonResponse::HTTP_NOT_FOUND ); } $response = $this->jobService->update($request, $rows->first()); DB::commit(); return response()->json([ 'message' => __('crud.message.update', ['model' => __('crud.model.talent_bank.job')]), 'job' => new JobResource($response), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function destroy(Request $request, $job) { $jobId = (int) $job; try { DB::beginTransaction(); $company = $request->talentBankUser; if (! ($company instanceof Company)) { return response()->json([ ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.company')])], ], JsonResponse::HTTP_NOT_FOUND); } $rows = $this->jobService->getByCustom([ ['column' => 'company_id', 'value' => $company->id], ['column' => 'id', 'value' => $jobId], ]); if ($rows->count() == 0) { return response()->json( ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.job')])], JsonResponse::HTTP_NOT_FOUND ); } $this->jobService->destroy($rows->first()); DB::commit(); return response()->json([ 'message' => __('crud.message.delete', ['model' => __('crud.model.talent_bank.job')]), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function storeApplication(Request $request, JobListing $job) { try { DB::beginTransaction(); $candidate = $request->talentBankUser; if (! ($candidate instanceof Candidate)) { return response()->json([ ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.candidate')])], ], JsonResponse::HTTP_NOT_FOUND); } $this->jobService->storeApplication($job, $candidate); DB::commit(); Observability::event('job.application.created', [ 'job_id' => $job->id, 'candidate_id' => $candidate->id, 'document_masked' => $this->maskDocument((string) $candidate->cpf), 'origin' => 'api/talent-bank/job/'.$job->id.'/application', ]); return response()->json([ 'message' => __('crud.message.insert', ['model' => __('crud.model.talent_bank.application')]), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); Observability::event('job.application.create_failed', [ 'job_id' => $job->id, 'document_masked' => $this->maskDocument(($candidate ?? null) instanceof Candidate ? (string) $candidate->cpf : ''), 'origin' => 'api/talent-bank/job/'.$job->id.'/application', 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function deleteApplication(Request $request, JobListing $job) { $candidate = null; try { DB::beginTransaction(); $candidate = $request->talentBankUser; if (! ($candidate instanceof Candidate)) { return response()->json([ ['message' => __('crud.message.object_not_found', ['object' => __('crud.model.talent_bank.candidate')])], ], JsonResponse::HTTP_NOT_FOUND); } $this->jobService->deleteApplication($job, $candidate); DB::commit(); Observability::event('job.application.deleted', [ 'job_id' => $job->id, 'candidate_id' => $candidate->id, 'document_masked' => $this->maskDocument((string) $candidate->cpf), 'origin' => 'api/talent-bank/job/'.$job->id.'/application', ]); return response()->json([ 'message' => __('crud.message.delete', ['model' => __('crud.model.talent_bank.application')]), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); Observability::event('job.application.delete_failed', [ 'job_id' => $job->id, 'document_masked' => $this->maskDocument(($candidate ?? null) instanceof Candidate ? (string) $candidate->cpf : ''), 'origin' => 'api/talent-bank/job/'.$job->id.'/application', 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } private function maskDocument(string $document): string { $digits = preg_replace('/\D/', '', $document); if ($digits === '') { return '***'; } if (strlen($digits) <= 4) { return str_repeat('*', strlen($digits)); } return substr($digits, 0, 3).str_repeat('*', max(0, strlen($digits) - 5)).substr($digits, -2); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings