Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
tbfguestbe.tbf.ro
/
app
/
Http
/
Controllers
/
Api
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
89.40.16.97
System
Linux server.atelieruldeit.ro 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User
tbf
PHP Version
7.3.33
Software
Apache
Doc root
Writable
close
Edit File :
RecruitmentController.php
| Size :
17.05
KB
Copy
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\RecruitmentAbilityFormRequest; use App\Http\Requests\RecruitmentDetailFormRequest; use App\Http\Requests\RecruitmentFormRequest; use App\Http\Requests\RecruitmentResponsibilityFormRequest; use App\Http\Resources\RecruitmentIndexCollection; use App\Http\Resources\RecruitmentIndexResource; use App\Http\Resources\RecruitmentShowResource; use App\Models\Activity; use App\Models\Instance; use App\Models\Position; use App\Models\Recruitment; use App\Models\RecruitmentAbility; use App\Models\RecruitmentAnswer; use App\Models\RecruitmentDetail; use App\Models\RecruitmentEmail; use App\Models\RecruitmentMessage; use App\Models\RecruitmentQuestion; use App\Models\RecruitmentResponsibility; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class RecruitmentController extends Controller { /** * Display a listing of the resource for this instance. * * @param Instance $instance * * @return RecruitmentIndexCollection|null */ public function indexAll(Instance $instance) { $recruitments = $instance->recruitments; return new RecruitmentIndexCollection($recruitments); } /** * Display recruitment for position. * * @param Instance $instance * * @return RecruitmentIndexResource|null */ public function index(Position $position) { $recruitment = $position->recruitment; if($recruitment === null) { return response()->json([ 'status' => 'success', 'data' => [], ], 200); } else { return new RecruitmentIndexResource($recruitment); } } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * Update the specified resource in storage. * * @param RecruitmentFormRequest $request * @param Position $position * @param Recruitment $recruitment * * @return JsonResponse */ public function update(RecruitmentFormRequest $request, Position $position, Recruitment $recruitment) { $data = $request->validated(); $recruitment->update($data); return response()->json([ 'status' => 'success', 'data' => new RecruitmentShowResource($recruitment), ], 200); } /** * Update the specified resource details in storage. * * @param RecruitmentDetailFormRequest $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentDetail $recruitmentDetail * * @return JsonResponse */ public function updateDetail(RecruitmentDetailFormRequest $request, Position $position, Recruitment $recruitment, RecruitmentDetail $recruitmentDetail) { $data = $request->validated(); $recruitmentDetail->update($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentDetail->id, 'code' => $recruitmentDetail->code, 'category' => $recruitmentDetail->category, 'title' => $recruitmentDetail->title, 'description' => $recruitmentDetail->description, 'active' => $recruitmentDetail->active, ] ], 200); } /** * Add the specified resource ability in storage. * * @param RecruitmentAbilityFormRequest $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAbility $recruitmentAbility * * @return JsonResponse */ public function addAbility(RecruitmentAbilityFormRequest $request, Position $position, Recruitment $recruitment) { $data = $request->validated(); $ability = $recruitment->abilities()->create($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $ability->id, 'description' => $ability->description, 'importance' => $ability->importance, ] ], 200); } /** * Update the specified resource ability in storage. * * @param RecruitmentAbilityFormRequest $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAbility $recruitmentAbility * * @return JsonResponse */ public function updateAbility(RecruitmentAbilityFormRequest $request, Position $position, Recruitment $recruitment, RecruitmentAbility $recruitmentAbility) { $data = $request->validated(); $recruitmentAbility->update($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentAbility->id, 'description' => $recruitmentAbility->description, 'importance' => $recruitmentAbility->importance, ] ], 200); } /** * Add the specified resource ability in storage. * * @param RecruitmentAbilityFormRequest $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAbility $recruitmentAbility * * @return JsonResponse */ public function addResponsibility(RecruitmentResponsibilityFormRequest $request, Position $position, Recruitment $recruitment) { $data = $request->validated(); $responsibility = $recruitment->responsibilities()->create($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $responsibility->id, 'description' => $responsibility->description, 'kpi' => $responsibility->kpi, ] ], 200); } /** * Update the specified resource ability in storage. * * @param RecruitmentResponsibilityFormRequest $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentResponsibility $recruitmentResponsibility * * @return JsonResponse */ public function updateResponsibility(RecruitmentResponsibilityFormRequest $request, Position $position, Recruitment $recruitment, RecruitmentResponsibility $recruitmentResponsibility) { $data = $request->validated(); $recruitmentResponsibility->update($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentResponsibility->id, 'description' => $recruitmentResponsibility->description, 'kpi' => $recruitmentResponsibility->kpi, ] ], 200); } /** * Update the specified resource email in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentEmail $recruitmentEmail * * @return JsonResponse */ public function updateEmail(Request $request, Position $position, Recruitment $recruitment, RecruitmentEmail $recruitmentEmail) { $validated = $request->validate([ 'subject' => 'required|string', 'message' => 'required|string' ]); $recruitmentEmail->update($validated); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentEmail->id, 'subject' => $recruitmentEmail->subject, 'message' => $recruitmentEmail->message, ] ], 200); } /** * Update the specified resource message in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentMessage $recruitmentMessage * * @return JsonResponse */ public function updateMessage(Request $request, Position $position, Recruitment $recruitment, RecruitmentMessage $recruitmentMessage) { $validated = $request->validate([ 'message' => 'required|string' ]); $recruitmentMessage->update($validated); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentMessage->id, 'message' => $recruitmentMessage->message, ] ], 200); } /** * Add question to the specified resource in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * * @return JsonResponse */ public function addQuestionWithAnswers(Request $request, Position $position, Recruitment $recruitment) { $validated = $request->validate([ 'question' => 'required|string', 'answers' => 'required|array', 'answers.*.answer' => 'required|string', 'answers.*.is_correct' => 'required|bool', ]); $question = $recruitment->questions()->create(['question' => $validated['question']]); foreach ($validated['answers'] as $answer) { $question->answers()->create([ 'answer' => $answer['answer'], 'is_correct' => $answer['is_correct'], ]); } return response()->json([ 'status' => 'success', 'data' => [ 'id' => $question->id, 'question' => $question->question, 'answers' => $question->answers->map(function($answer) { return [ 'id' => $answer->id, 'answer' => $answer->answer, 'is_correct' => $answer->is_correct, ]; }), ] ], 200); } /** * Update the specified resource question in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentQuestion $requirementQuestion * * @return JsonResponse */ public function updateQuestionWithAnswers(Request $request, Position $position, Recruitment $recruitment, RecruitmentQuestion $recruitmentQuestion) { $validated = $request->validate([ 'question' => 'required|string', 'answers' => 'required|array', 'answers.*.id' => 'nullable|integer', 'answers.*.answer' => 'required|string', 'answers.*.is_correct' => 'required|bool', ]); $recruitmentQuestion->update($validated); foreach ($validated['answers'] as $answer) { if (isset($answer['id'])) { $recruitmentQuestion->answers()->where('id', $answer['id'])->update([ 'answer' => $answer['answer'], 'is_correct' => $answer['is_correct'], ]); } else { $recruitmentQuestion->answers()->create([ 'answer' => $answer['answer'], 'is_correct' => $answer['is_correct'], ]); } } return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentQuestion->id, 'question' => $recruitmentQuestion->question, 'answers' => $recruitmentQuestion->answers->map(function($answer) { return [ 'id' => $answer->id, 'answer' => $answer->answer, 'is_correct' => $answer->is_correct, ]; }), ] ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param Recruitment $recruitment * @param RecruitmentQuestion $recruitmentQuestion * * @return JsonResponse */ public function destroyQuestion(Position $position, Recruitment $recruitment, RecruitmentQuestion $recruitmentQuestion) { DB::transaction(function () use($recruitmentQuestion) { $recruitmentQuestion->answers()->each(function($answer) { $answer->delete(); }); $recruitmentQuestion->delete(); }); return response()->json([ 'status' => 'success' ], 200); } /** * Add question to the specified resource in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentQuestion $recruitmentQuestion * * @return JsonResponse */ public function addAnswer(Request $request, Position $position, Recruitment $recruitment, RecruitmentQuestion $recruitmentQuestion) { $validated = $request->validate([ 'answer' => 'required|string', 'is_correct' => 'required|bool', ]); $recruitmentAnswer = $recruitmentQuestion->answers()->create($validated); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentAnswer->id, 'answer' => $recruitmentAnswer->answer, 'is_correct' => $recruitmentAnswer->is_correct, ] ], 200); } /** * Update the specified resource answer in storage. * * @param Request $request * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAnswer $recruitmentAnswer * * @return JsonResponse */ public function updateAnswer(Request $request, Position $position, Recruitment $recruitment, RecruitmentAnswer $recruitmentAnswer) { $validated = $request->validate([ 'answer' => 'required|string', 'is_correct' => 'required|boolean' ]); $recruitmentAnswer->update($validated); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $recruitmentAnswer->id, 'answer' => $recruitmentAnswer->answer, 'is_correct' => $recruitmentAnswer->is_correct, ] ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAnswer $recruitmentAnswer * * @return JsonResponse */ public function destroyAnswer(Position $position, Recruitment $recruitment, RecruitmentAnswer $recruitmentAnswer) { $recruitmentAnswer->delete(); return response()->json([ 'status' => 'success' ], 200); } /** * Remove relation between Recruitment and activity. * * @param Position $position * @param Recruitment $recruitment * @param Activity $activity * * @return JsonResponse */ public function unlinkActivity(Position $position, Recruitment $recruitment, Activity $activity) { // sterg din tabela intermediara $recruitment->activities()->detach($activity->id); return response()->json([ 'status' => 'success' ], 200); } /** * Link Activity to Responsibility * * @param Position $position * @param Recruitment $recruitment * @param Activity $activity * * @return JsonResponse */ public function linkActivity(Position $position, Recruitment $recruitment, Activity $activity) { if (!$position->activities()->where('id', $activity->id)->exists()) { return response()->json([ 'status' => 'error', 'message' => 'Aceasta activitate nu exista' ], 422); } $recruitment->activities()->syncWithoutDetaching($activity->id); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $activity->id, 'title' => $activity->title, 'description' => $activity->description, 'importance' => $activity->importance, ] ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param Recruitment $recruitment * @param RecruitmentAbility $recruitmentAbility * * @return JsonResponse */ public function destroyAbility(Position $position, Recruitment $recruitment, RecruitmentAbility $recruitmentAbility) { $recruitmentAbility->delete(); return response()->json([ 'status' => 'success' ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param RecruitmentResponsibility $recruitmentResponsibility * * @return JsonResponse */ public function destroyResponsibility(Position $position, Recruitment $recruitment, RecruitmentResponsibility $recruitmentResponsibility) { $recruitmentResponsibility->delete(); return response()->json([ 'status' => 'success' ], 200); } }
Back