File: /var/www/html/app/Livewire/Buyer/Favorites.php
<?php
namespace App\Livewire\Buyer;
use Livewire\Component;
use App\Services\ApiEndpoints;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
class Favorites extends Component
{
public $user;
public $favorites = [];
public function mount()
{
$this->user = Session::get("user");
Session::forget('success');
Session::forget('error');
if ($this->user) {
if (Session::get('gig_slug')) {
$slug = Session::get('gig_slug');
$this->updateFavorite($slug);
} else {
$this->fetchFavorites();
}
} else {
Session::put('redirect', 'favourite');
return redirect()->away('/google');
}
}
public function fetchFavorites()
{
try {
$apiEndpoints = new ApiEndpoints();
$headers = $apiEndpoints->header();
$response = Http::withHeaders($headers)
->get(ApiEndpoints::fetchFavorites());
if ($response->successful()) {
$this->favorites = $response->json()['data'];
// Session::flash('success', $response->json()['message']);
} else {
Session::flash('error', $response->json()['message']);
}
} catch (\Throwable $e) {
Log::error($e->getMessage());
$this->addError('orders', 'Failed to fetch gig favorites. Please try again later.');
}
}
public function updateFavorite($slug)
{
try {
$gig_slug = Session::get('gig_slug') ?? $slug;
$body = [
'gig_slug' => $gig_slug,
];
// dd($body);
$apiEndpoints = new ApiEndpoints();
$headers = $apiEndpoints->header();
$response = Http::withHeaders($headers)
->withBody(json_encode($body), 'application/json')
->post(ApiEndpoints::addFavorites());
if ($response->successful()) {
$this->redirect('/account/favorite', navigate: true);
Session::flash('success', $response->json()['message']);
Session::forget('gig_slug');
} else {
Session::flash('error', $response->json()['message']);
}
} catch (\Throwable $e) {
Log::error($e->getMessage());
}
}
public function render()
{
return view('livewire.buyer.favorites');
}
}