first(); return response()->json($aboutMe); } /** * @OA\Get( * path="/website/about-me/{id}", * tags={"About Me"}, * summary="Get a specific About Me entry", * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Response(response=200, description="OK") * ) */ public function show($id) { $aboutMe = AboutMe::with('skills')->findOrFail($id); return response()->json($aboutMe); } /** * @OA\Post( * path="/website/about-me", * tags={"About Me"}, * summary="Create an About Me entry", * @OA\RequestBody(@OA\MediaType(mediaType="application/json")), * @OA\Response(response=201, description="Created") * ) */ public function store(StoreAboutMeRequest $request) { $aboutMe = AboutMe::create($request->validated()); return response()->json($aboutMe, 201); } /** * @OA\Put( * path="/website/about-me/{id}", * tags={"About Me"}, * summary="Update an About Me entry", * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\RequestBody(@OA\MediaType(mediaType="application/json")), * @OA\Response(response=200, description="OK") * ) */ public function update(UpdateAboutMeRequest $request, $id) { $aboutMe = AboutMe::findOrFail($id); $aboutMe->update($request->validated()); return response()->json($aboutMe); } /** * @OA\Delete( * path="/website/about-me/{id}", * tags={"About Me"}, * summary="Delete an About Me entry", * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Response(response=204, description="No Content") * ) */ public function destroy($id) { AboutMe::destroy($id); return response()->json(null, 204); } /** * @OA\Get( * path="/website/about-me/{id}/translation/{locale}", * tags={"About Me"}, * summary="Get localized About Me with skills", * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="locale", in="path", required=true, @OA\Schema(type="string", enum={"fa","en"})), * @OA\Response(response=200, description="OK", @OA\JsonContent(ref="#/components/schemas/AboutMe")), * @OA\Response(response=404, description="Translation not found") * ) */ public function getTranslation($id, $locale) { $aboutMe = AboutMe::with('skills')->findOrFail($id); if (!$aboutMe->hasTranslation('title', $locale)) { return response()->json(['message' => 'Translation not found', 'locale' => $locale], 404); } $skills = $aboutMe->skills->map(function ($skill) use ($locale) { return [ 'id' => $skill->id, 'title' => $skill->getTranslation('title', $locale), 'description' => $skill->getTranslation('description', $locale), 'image' => $skill->image, 'link' => $skill->link, 'percentage' => $skill->percentage, ]; }); $data = [ 'id' => $aboutMe->id, 'title' => $aboutMe->getTranslation('title', $locale), 'description' => $aboutMe->getTranslation('description', $locale), 'image' => $aboutMe->image, 'skills' => $skills, ]; return response()->json($data); } }