File manager - Edit - /var/www/html/homologBancodetalentos/app/Http/Controllers/TalentBank/CompanyController.php
Back
<?php namespace App\Http\Controllers\TalentBank; use App\Http\Controllers\Controller; use App\Http\Requests\LoginRequest; use App\Http\Requests\TalentBank\CompanyRequest; use App\Http\Resources\TalentBank\CompanyResource; use App\Http\Resources\TalentBank\CompanySessionResource; use App\Http\Resources\TalentBank\JobApplicationCollection; use App\Http\Services\AuthService; use App\Http\Services\TalentBank\CompanyService; use App\Http\Services\TalentBank\JobService; use App\Http\Services\UserService; use App\Support\TalentBank\IntegrationLog; use App\Support\TalentBank\Observability; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class CompanyController extends Controller { private CompanyService $companyService; private AuthService $authService; private UserService $userService; private JobService $jobService; public function __construct() { $this->companyService = new CompanyService(); $this->authService = new AuthService(); $this->userService = new UserService(); $this->jobService = new JobService(); $this->middleware('auth.permission:talent-bank-user-company')->only(['session', 'jobs', 'selfEdit']); } public function session(Request $request) { return response()->json([ 'data' => ['company' => new CompanySessionResource($request->talentBankUser)], 'message' => __('validation.success'), ], JsonResponse::HTTP_OK); } public function register(Request $request) { $data = $request->all(); if (! CompanyRequest::validateCnpj($data['document'])) { return response()->json( [ 'message' => __('validation.validation_error'), 'data' => ['document' => [__('validation.cnpj')]], ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY ); } try { DB::beginTransaction(); $arrData = [ 'permissions' => ['talent-bank-user-company'], 'user_type_id' => 2, 'first_access' => 0, 'module_name' => config('talent_bank.module_name'), ]; $request->merge($arrData); $response = $this->authService->register($request); if (! $response->successful()) { $isValidation = $response->status() === JsonResponse::HTTP_UNPROCESSABLE_ENTITY; Observability::event('company.register.failed', [ 'document' => (string) $request->input('document', ''), 'http_status' => $response->status(), 'error' => data_get($response->json(), 'message', $isValidation ? 'validation_error' : 'upstream_error'), ], $isValidation ? 'warning' : 'error'); DB::rollBack(); return response($response->json(), $response->status()); } $data = $request->all(); $request->merge(['cnpj' => $data['document']]); $response = $this->companyService->getByCustom([ ['column' => 'cnpj', 'value' => $data['document']], ]); if ($response->count() == 0) { $request->merge(['corporate_name' => $data['name']]); $response = $this->companyService->store($request); } else { $response = $response->first(); } DB::commit(); Observability::event('company.register.success', [ 'document' => (string) $data['document'], 'email' => (string) ($data['email'] ?? ''), ]); return response()->json([ 'message' => __('crud.message.insert', ['model' => __('crud.model.talent_bank.company')]), 'candidate' => new CompanyResource($response), ], JsonResponse::HTTP_OK); } catch (Exception $e) { DB::rollBack(); Observability::event('company.register.failed', [ 'document' => (string) $request->input('document', ''), 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function login(LoginRequest $request) { try { $response = $this->authService->login($request); if ($response->status() == JsonResponse::HTTP_UNAUTHORIZED) { Observability::event('company.login.failed', [ 'document' => (string) $request->input('document', ''), 'http_status' => $response->status(), 'error' => data_get($response->json(), 'message', 'unauthorized'), ], 'warning'); return response($response->json(), $response->status()); } $data = $request->all(); $company = $this->companyService->getByCustom([ ['column' => 'cnpj', 'value' => $data['document']], ]); if ($company->count() == 0) { $payload = $response->json(); $request->headers->set('authorization', $payload['token_type'].' '.$payload['access_token']); $request->merge(['permissions' => ['talent-bank-user-company']]); try { $this->userService->selfAssignPermission($request); } catch (\Throwable $e) { IntegrationLog::warning('talent_bank.user_service', 'self_assign_permission_failed', [ 'document' => (string) $request->input('document', ''), 'error' => $e->getMessage(), ]); } $sessionResponse = $this->authService->session($request); $session = $sessionResponse->json(); $request->merge([ 'cnpj' => $session['data']['document'], 'trading_name' => $session['data']['name'], 'email' => $session['data']['email'], ]); $this->companyService->store($request); } return response($response->json(), $response->status()); } catch (Exception $e) { DB::rollBack(); Observability::event('company.login.failed', [ 'document' => (string) $request->input('document', ''), 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function jobs(Request $request) { try { request()->query->add(['company_id' => (string) $request->talentBankUser->id, 'sort' => 'is_hiring,desc']); $response = $this->jobService->paginateRessource($request, JobApplicationCollection::class); 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 selfEdit(Request $request) { try { $request->merge(['_method' => 'PUT']); $response = $this->userService->selfEdit($request); if ($response->status() == JsonResponse::HTTP_OK) { $userData = $response->json()['data']['user']; $companyRequest = new Request(); $companyRequest->merge([ 'document' => $userData['document'], 'name' => $userData['name'], 'email' => $userData['email'], ]); $company = $this->companyService->getByCustom([ ['column' => 'cnpj', 'value' => $userData['document']], ])->first(); DB::beginTransaction(); $response = $this->companyService->update($companyRequest, $company); DB::commit(); Observability::event('company.self_edit.success', [ 'document' => (string) $userData['document'], ]); return response()->json([ 'message' => __('crud.message.update', ['model' => __('crud.model.talent_bank.company')]), 'company' => new CompanyResource($response), ], JsonResponse::HTTP_OK); } Observability::event('company.self_edit.failed', [ 'document' => (string) $request->input('document', ''), 'http_status' => $response->status(), 'error' => data_get($response->json(), 'message', 'upstream_error'), ], 'warning'); return response()->json($response->json(), $response->status()); } catch (Exception $e) { DB::rollBack(); Observability::event('company.self_edit.failed', [ 'document' => (string) $request->input('document', ''), 'error' => $e->getMessage(), ], 'error'); return response()->json( ['message' => $e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } } public function getFromTalentBank(Request $request) { try { $response = $this->companyService->getFromTalentBank($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 ); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings