Files
Nexora/app/Livewire/UserPhotoUpload.php
Javi f97a7a8498
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
añadir nuevas funcionalidades
2025-04-30 20:56:28 +02:00

82 lines
1.9 KiB
PHP

<?php
namespace App\Livewire;
use App\Models\User;
use Livewire\Component;
use Livewire\WithFileUploads;
use Illuminate\Support\Facades\Storage;
class UserPhotoUpload extends Component
{
use WithFileUploads;
public $photo;
public $existingPhoto;
public $tempPhoto;
public $userId;
protected $listeners = ['photoUpdated' => 'refreshPhoto'];
public function mount($existingPhoto = null, $userId = null)
{
$this->existingPhoto = $existingPhoto;
$this->userId = $userId;
}
public function uploadPhoto()
{
$this->validate([
'photo' => 'image|max:2048|mimes:jpg,png,jpeg,gif',
]);
$this->tempPhoto = $this->photo->temporaryUrl();
}
public function updatedPhoto()
{
$this->validate([
'photo' => 'image|max:2048|mimes:jpg,png,jpeg,gif',
]);
$this->tempPhoto = $this->photo->temporaryUrl();
// Emitir evento con la foto temporal
$this->emit('photoUploaded', $this->photo->getRealPath());
}
public function removePhoto()
{
$this->reset('photo', 'tempPhoto');
}
public function deletePhoto()
{
if ($this->existingPhoto) {
Storage::delete('public/photos/' . $this->existingPhoto);
if ($this->userId) {
$user = User::find($this->userId);
$user->update(['profile_photo_path' => null]);
}
$this->existingPhoto = null;
$this->emit('photoDeleted');
}
}
public function refreshPhoto()
{
$this->existingPhoto = User::find($this->userId)->profile_photo_path;
}
public function render()
{
return view('livewire.user-photo-upload', [
//'photo' => $this->photo,
'tempPhoto' => $this->tempPhoto,
'existingPhoto' => $this->existingPhoto,
]);
}
}