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 :
ResponsibilityController.php
| Size :
9.41
KB
Copy
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\ResponsibilityFormRequest; use App\Http\Resources\PositionSimpleResource; use App\Http\Resources\ResponsibilityEditResource; use App\Http\Resources\ResponsibilityIndexCollection; use App\Http\Resources\ResponsibilityShowResource; use App\Managers\PromptManager; use App\Models\Activity; use App\Models\Position; use App\Models\Responsibility; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class ResponsibilityController extends Controller { /** * Display a listing of the resource. * * @param Position $position * * @return JsonResponse */ public function index(Position $position): JsonResponse { $responsibilities = $position->responsibilities() ->latest() ->get(); return response()->json([ 'position' => [ 'id' => $position->id, 'name' => $position->name, 'emoji' => $position->emoji, ], 'data' => new ResponsibilityIndexCollection($responsibilities) ]); } /** * Display the specified resource. * * @param Position $position * @param Responsibility $responsibility * * @return ResponsibilityShowResource */ public function show(Position $position, Responsibility $responsibility): ResponsibilityShowResource { return new ResponsibilityShowResource($responsibility); } /** * Store a newly created resource in storage. * * @param Request $request * @param Position $position * * @return JsonResponse */ public function store(Request $request, Position $position): JsonResponse { $validated = $request->validate([ 'text' => 'required|string' ]); $instance = auth()->user()->instance; $result = PromptManager::generateResponsibility($validated['text'], $position, $instance); $responsibilityData = json_decode($result, true); $position->responsibilities()->create([ 'name' => $responsibilityData['responsibility']['name'], 'description' => $responsibilityData['responsibility']['description'], 'frequency' => $responsibilityData['responsibility']['frequency'], 'kpi' => $responsibilityData['responsibility']['kpi'], 'verification' => $responsibilityData['responsibility']['verification'], 'mistakes_limit' => $responsibilityData['responsibility']['mistakes_limit'], ]); return response()->json([ 'status' => 'success', ], 200); } /** * Display the specified resource. * * @param Position $position * @param Responsibility $responsibility * * @return ResponsibilityEditResource */ public function edit(Position $position, Responsibility $responsibility): ResponsibilityEditResource { return new ResponsibilityEditResource($responsibility); } /** * Update the specified resource in storage. * * @param ResponsibilityFormRequest $request * @param Position $position * @param Responsibility $responsibility * * @return JsonResponse */ public function update(ResponsibilityFormRequest $request, Position $position, Responsibility $responsibility) { $data = $request->validated(); $responsibility->update($data); return response()->json([ 'status' => 'success', 'data' => new ResponsibilityShowResource($responsibility), ], 200); } /** * Modify the resource by AI. * * @param Request $request * @param PositionFormRequest $request * @param Responsibility $responsibility * * * @return JsonResponse */ public function updateAi(Request $request, Position $position, Responsibility $responsibility): JsonResponse { $validated = $request->validate([ 'text' => 'required|string' ]); $instance = auth()->user()->instance; $result = PromptManager::generateResponsibilityModification($validated['text'], $position, $responsibility, $instance); $responsibilityData = json_decode($result, true); $responsibility->update([ 'name' => $responsibilityData['responsibility']['name'], 'description' => $responsibilityData['responsibility']['description'], 'frequency' => $responsibilityData['responsibility']['frequency'], 'kpi' => $responsibilityData['responsibility']['kpi'], 'verification' => $responsibilityData['responsibility']['verification'], 'mistakes_limit' => $responsibilityData['responsibility']['mistakes_limit'], ]); return response()->json([ 'status' => 'success', ], 200); } /** * Split the resource by AI. * * @param Request $request * @param Position $position * @param Responsibility $responsibility * * * @return JsonResponse */ public function splitAi(Request $request, Position $position, Responsibility $responsibility): JsonResponse { $instance = auth()->user()->instance; $result = PromptManager::generateResponsibilitySplit($position, $responsibility, $instance); $responsibilitiesData = json_decode($result, true); if (count($responsibilitiesData['data']) < 2) { return response()->json([ 'status' => 'success', 'message' => 'Operațiunea de divizare nu a dus la nicio modificare', ], 422); } foreach ($responsibilitiesData['data'] as $responsibilityItem) { $activityIds = $responsibilityItem['responsibility']['activity_ids']; $responsibility = $position->responsibilities()->create([ 'activity_ids' => $activityIds, 'name' => $responsibilityItem['responsibility']['name'], 'description' => $responsibilityItem['responsibility']['description'], 'frequency' => $responsibilityItem['responsibility']['frequency'], 'kpi' => $responsibilityItem['responsibility']['kpi'], 'verification' => $responsibilityItem['responsibility']['verification'], 'mistakes_limit' => $responsibilityItem['responsibility']['mistakes_limit'], ]); // atasez activitatiile de care e legata responsabilitatea generata $responsibility->activities()->attach($activityIds); } return response()->json([ 'status' => 'success', ], 200); } /** * Remove the specified resource from storage. * * @param Position $position * @param Responsibility $responsibility * * @return JsonResponse */ public function destroy(Position $position, Responsibility $responsibility) { $responsibility->delete(); return response()->json([ 'status' => 'success' ], 200); } /** * Remove relation between Responsibility and activity. * * @param Position $position * @param Responsibility $responsibility * @param Activity $activity * * @return JsonResponse */ public function unlinkActivity(Position $position, Responsibility $responsibility, Activity $activity) { $itemToRemove = $activity->id; // sterg din tabela intermediara $responsibility->activities()->detach($itemToRemove); // sterg din tabela responsability, coloana activity_ids $activityIds = $responsibility->activity_ids; $index = array_search($itemToRemove, $activityIds); if ($index !== false) { unset($activityIds[$index]); $responsibility->activity_ids = array_values($activityIds); $responsibility->save(); } return response()->json([ 'status' => 'success' ], 200); } /** * Link Activity to Responsibility * * @param Position $position * @param Responsibility $responsibility * @param Activity $activity * * @return JsonResponse */ public function linkActivity(Position $position, Responsibility $responsibility, Activity $activity) { if (!$position->activities()->where('id', $activity->id)->exists()) { return response()->json([ 'status' => 'error', 'message' => 'Aceasta activitate nu exista' ], 422); } $responsibility->activities()->syncWithoutDetaching($activity->id); $activityIds = $responsibility->activity_ids; $index = false; if (!is_null($activityIds)) { $index = array_search($activity->id, $activityIds); } if (isset($index) && $index === false) { $activityIds[] = $activity->id; $responsibility->activity_ids = array_values($activityIds); $responsibility->save(); } return response()->json([ 'status' => 'success', 'data' => [ 'id' => $activity->id, 'title' => $activity->title, 'emoji' => $activity->emoji, 'description' => $activity->description, 'importance' => $activity->importance, 'problems' => $activity->problems, ] ], 200); } }
Back