diff --git a/app/Http/Controllers/FamilyController.php b/app/Http/Controllers/FamilyController.php index f4421b5..232bc61 100644 --- a/app/Http/Controllers/FamilyController.php +++ b/app/Http/Controllers/FamilyController.php @@ -474,46 +474,51 @@ class FamilyController extends Controller public function uploadFamilyMemberPicture(Request $request, $id) { $request->validate([ - 'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:5120', // 5MB max + 'image' => 'required', + 'folder' => 'required|string', + 'filename' => 'required|string', ]); - $user = Auth::user(); + try { + $user = Auth::user(); - // Verify the family member belongs to the authenticated user - $relationship = UserRelationship::where('guardian_user_id', $user->id) - ->where('dependent_user_id', $id) - ->firstOrFail(); + // Verify the family member belongs to the authenticated user + $relationship = UserRelationship::where('guardian_user_id', $user->id) + ->where('dependent_user_id', $id) + ->firstOrFail(); - $familyMember = User::findOrFail($id); + $familyMember = User::findOrFail($id); - if ($request->hasFile('image')) { - $image = $request->file('image'); + // Handle base64 image from cropper + $imageData = $request->image; + $imageParts = explode(";base64,", $imageData); + $imageTypeAux = explode("image/", $imageParts[0]); + $extension = $imageTypeAux[1]; + $imageBinary = base64_decode($imageParts[1]); - // Generate unique filename - $filename = 'profile_' . $familyMember->id . '_' . time() . '.' . $image->getClientOriginalExtension(); - - // Store in public/images/profiles - $path = $image->storeAs('images/profiles', $filename, 'public'); + $folder = trim($request->folder, '/'); + $fileName = $request->filename . '.' . $extension; + $fullPath = $folder . '/' . $fileName; // Delete old profile picture if exists if ($familyMember->profile_picture && \Storage::disk('public')->exists($familyMember->profile_picture)) { \Storage::disk('public')->delete($familyMember->profile_picture); } - // Update family member - $familyMember->update(['profile_picture' => $path]); + // Store in the public disk (storage/app/public) + \Storage::disk('public')->put($fullPath, $imageBinary); + + // Update family member's profile_picture field + $familyMember->update(['profile_picture' => $fullPath]); return response()->json([ 'success' => true, - 'message' => 'Profile picture uploaded successfully.', - 'path' => $path, + 'path' => $fullPath, + 'url' => asset('storage/' . $fullPath) ]); + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => $e->getMessage()], 500); } - - return response()->json([ - 'success' => false, - 'message' => 'No image file provided.', - ], 400); } /** diff --git a/resources/views/family/dashboard.blade.php b/resources/views/family/dashboard.blade.php index 6e4d597..be5a63b 100644 --- a/resources/views/family/dashboard.blade.php +++ b/resources/views/family/dashboard.blade.php @@ -20,8 +20,8 @@
- @if($relationship->dependent->media_gallery[0] ?? false) - {{ $relationship->dependent->full_name }} + @if($relationship->dependent->profile_picture) + {{ $relationship->dependent->full_name }} @else
{{ strtoupper(substr($relationship->dependent->full_name, 0, 1)) }} diff --git a/resources/views/family/edit.blade.php b/resources/views/family/edit.blade.php index d1276d3..fed2c0a 100644 --- a/resources/views/family/edit.blade.php +++ b/resources/views/family/edit.blade.php @@ -12,14 +12,27 @@
- Profile Picture + @if($relationship->dependent->profile_picture) + Profile Picture + @else +
+ {{ strtoupper(substr($relationship->dependent->full_name, 0, 1)) }} +
+ @endif
- +
@@ -246,14 +259,6 @@
- -