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 :
ProcedureController.php
| Size :
12.83
KB
Copy
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\ProcedureFormRequest; use App\Http\Requests\ProcedureStepFormRequest; use App\Http\Requests\ProcedureStepsReorderRequest; use App\Http\Resources\ProcedureIndexCollection; use App\Http\Resources\ProcedureIndexResource; use App\Http\Resources\ProcedureShowResource; use App\Jobs\GenerateProcedureManualJob; use App\Jobs\GenerateProcedureManualPracticallyJob; use App\Jobs\GenerateProcedureManualRolePlayJob; use App\Jobs\GenerateProcedureManualTheoreticJob; use App\Jobs\GenerateProcedureStepsJob; use App\Managers\PromptManager; use App\Models\Activity; use App\Models\Position; use App\Models\Procedure; use App\Models\ProcedureManual; use App\Models\ProcedureStep; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class ProcedureController extends Controller { /** * Display a listing of the resource. * * @param Position $position * * @return JsonResponse */ public function index(Position $position) { $procedures = $position->procedures; return response()->json([ 'position' => [ 'id' => $position->id, 'name' => $position->name, 'emoji' => $position->emoji, ], 'data' => new ProcedureIndexCollection($procedures) ]); } /** * Store a newly created resource in storage. * * @param Request $request * * @return JsonResponse */ public function store(Request $request, Position $position) { $validated = $request->validate([ 'text' => 'required|string' ]); $instance = auth()->user()->instance; $result = PromptManager::generateProcedure($validated['text'], $position, $instance); $procedureData = json_decode($result, true); $procedure = Procedure::create([ 'position_id' => $position->id, 'title' => $procedureData['title'], 'procedure_trigger' => $procedureData['procedure_trigger'], 'generated_by_ai' => true, 'completed_step' => Procedure::STEP_TITLE, ]); return response()->json([ 'status' => 'success', 'data' => new ProcedureShowResource($procedure) ], 200); } /** * Display the specified resource. * * @param Position $position * @param Procedure $procedure * * @return ProcedureShowResource */ public function show(Position $position, Procedure $procedure): ProcedureShowResource { return new ProcedureShowResource($procedure); } /** * Update the specified resource in storage. * * @param ProcedureFormRequest $request * @param Position $position * @param Procedure $procedure * * @return JsonResponse */ public function update(ProcedureFormRequest $request, Position $position, Procedure $procedure) { $data = $request->validated(); $procedure->update($data); return response()->json([ 'status' => 'success', 'data' => new ProcedureShowResource($procedure), ], 200); } /** * Modify the resource by AI. * * @param Request $request * @param Position $position * @param Procedure $procedure * * * @return JsonResponse */ public function updateAi(Request $request, Position $position, Procedure $procedure): JsonResponse { $validated = $request->validate([ 'text' => 'nullable|string', 'section' => 'required|string|in:steps,theoretic,role_play,practically' ]); $instance = auth()->user()->instance; switch ($validated['section']) { case 'steps': $procedure->update(['is_step_processing' => 1]); GenerateProcedureStepsJob::dispatch($procedure); return response()->json([ 'status' => 'success', 'message' => 'Pasii procedurii sunt in curs de regenerare' ], 200); case 'theoretic': $procedure->update(['is_theoretic_manual_processing' => 1]); GenerateProcedureManualTheoreticJob::dispatch($procedure); return response()->json([ 'status' => 'success', 'message' => 'Manualul teoretic al procedurii este in curs de regenerare' ], 200); break; case 'role_play': $procedure->update(['is_role_play_manual_processing' => 1]); GenerateProcedureManualRolePlayJob::dispatch($procedure); return response()->json([ 'status' => 'success', 'message' => 'Manualul "Joc de rol" al procedurii este in curs de regenerare' ], 200); break; case 'practically': $procedure->update(['is_practically_manual_processing' => 1]); GenerateProcedureManualPracticallyJob::dispatch($procedure); return response()->json([ 'status' => 'success', 'message' => 'Manualul practic al procedurii este in curs de regenerare' ], 200); break; default: # code... break; } $result = PromptManager::generateProcedureModification($validated['text'], $position, $procedure, $instance); $procedureData = json_decode($result, true); $procedure = Procedure::create([ 'position_id' => $position->id, 'title' => $procedureData['title'], 'procedure_trigger' => $procedureData['procedure_trigger'], 'generated_by_ai' => true, 'completed_step' => Procedure::STEP_TRAINING, ]); /// trebuie salvate stepurile si manualele - inca nu stiu cum foreach ($procedureData['steps'] as $value) { // $procedure->steps() // ai } return response()->json([ 'status' => 'success', ], 200); } /** * Add the specified resource step in storage. * * @param ProcedureStepFormRequest $request * @param Position $position * @param Procedure $procedure * * @return JsonResponse */ public function addStep(ProcedureStepFormRequest $request, Position $position, Procedure $procedure) { $data = $request->validated(); $procedureStep = $procedure->steps()->create($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $procedureStep->id, 'description' => $procedureStep->description, 'instruction' => $procedureStep->instruction, ] ], 200); } /** * Modify the specified resource step in storage. * * @param ProcedureStepFormRequest $request * @param Position $position * @param Procedure $procedure * @param ProcedureStep $procedureStep * * @return JsonResponse */ public function updateStep(ProcedureStepFormRequest $request, Position $position, Procedure $procedure, ProcedureStep $procedureStep) { $data = $request->validated(); $procedureStep->update($data); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $procedureStep->id, 'description' => $procedureStep->description, 'instruction' => $procedureStep->instruction, ] ], 200); } /** * Reorder procedure step. * * @param ProcedureStepsReorderRequest $request * @param Position $position * @param Procedure $procedure * * @return JsonResponse */ public function reorderSteps(ProcedureStepsReorderRequest $request, Position $position, Procedure $procedure) { $data = $request->validated(); foreach ($data['steps'] as $key => $step) { $procedure->steps()->where('id', $step['id'])->update([ 'order' => $key+1 ]); } return response()->json([ 'status' => 'success', 'data' => new ProcedureShowResource($procedure) ], 200); } /** * Delete the specified resource step in storage. * * @param Position $position * @param Procedure $procedure * @param ProcedureStep $procedureStep * * @return JsonResponse */ public function destroyStep(Position $position, Procedure $procedure, ProcedureStep $procedureStep) { $procedureStep->delete(); return response()->json([ 'status' => 'success' ], 200); } /** * Remove relation between Procedure and activity. * * @param Position $position * @param Procedure $procedure * @param Activity $activity * * @return JsonResponse */ public function unlinkActivity(Position $position, Procedure $procedure, Activity $activity) { $itemToRemove = $activity->id; // sterg din tabela procedure, din coloana activity_ids $activityIds = $procedure->activity_ids; $index = array_search($itemToRemove, $activityIds); if ($index !== false) { unset($activityIds[$index]); $procedure->activity_ids = array_values($activityIds); $procedure->save(); } return response()->json([ 'status' => 'success' ], 200); } /** * Link Activity to Procedure * * @param Position $position * @param Procedure $procedure * @param Activity $activity * * @return JsonResponse */ public function linkActivity(Position $position, Procedure $procedure, Activity $activity) { if (!$position->activities()->where('id', $activity->id)->exists()) { return response()->json([ 'status' => 'error', 'message' => 'Aceasta activitate nu exista' ], 422); } $activityIds = $procedure->activity_ids; $index = false; if (!is_null($activityIds)) { $index = array_search($activity->id, $activityIds); } if (isset($index) && $index === false) { $activityIds[] = $activity->id; $procedure->activity_ids = array_values($activityIds); $procedure->save(); } return response()->json([ 'status' => 'success', 'data' => [ 'id' => $activity->id, 'title' => $activity->title, 'description' => $activity->description, 'importance' => $activity->importance, ] ], 200); } /** * Modify the specified resource manual in storage. * * @param Request $request * @param Position $position * @param Procedure $procedure * @param ProcedureManual $procedureManual * * @return JsonResponse */ public function updateManual(Request $request, Position $position, Procedure $procedure, ProcedureManual $procedureManual) { $validated = $request->validate([ 'theoretic' => 'nullable|string', 'role_play' => 'nullable|string', 'practically' => 'nullable|string', ]); $procedureManual->update($validated); return response()->json([ 'status' => 'success', 'data' => [ 'id' => $procedureManual->id, 'theoretic' => $procedureManual->theoretic, 'role_play' => $procedureManual->role_play, 'practically' => $procedureManual->practically, ] ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param Procedure $procedure * * @return JsonResponse */ public function destroy(Position $position, Procedure $procedure) { $procedure->delete(); return response()->json([ 'status' => 'success' ], 200); } /** * Check if resource is in processing * * @param Position $position * @param Procedure $procedure * * @return JsonResponse */ public function checkStatus(Position $position, Procedure $procedure): JsonResponse { return response()->json([ 'is_step_processing' => $procedure->is_step_processing, 'is_theoretic_manual_processing' => $procedure->is_theoretic_manual_processing, 'is_role_play_manual_processing' => $procedure->is_role_play_manual_processing, 'is_practically_manual_processing' => $procedure->is_practically_manual_processing, ], 200); } }
Back