HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/Api/BusinessApiController.php
<?php

namespace App\Http\Controllers\Api;

use App\Address;
use App\Businesses;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;

class BusinessApiController extends Controller
{
    public function register(Request $request)
    {
        $user_id = Auth::user()->id;
        $direction = $request["businessAddress"];
        $addressData = [
            'direction' => $direction,
            'user_id' => $user_id,
            'active' => true,
            'lat' =>$request['businessLatitude'],
            'long' =>$request['businessLongitude']
        ];

        if ($request['id']) {
            $business = Businesses::where('id', $request['id'])->first();
            $address = Address::where('id', $business->address_id)->first();
            $address->update($addressData);
        } else {
            $address = Address::create($addressData);
        }

        $businessData = [
            'name' => $request['name'],
            'description' => $request['description'],
            'phone' => $request['phone'],
            'age' => $request['age'],
            'instagram' => $request['business_instagram'],
            'facebook' => $request['business_facebook'],
            'user_id' => $user_id,
            'category_id' => $request['category'],
            'address_id' => $address->id,
            'website' => $request['website'],
            'phone' => $request['phone']['nationalNumber'] ?? $request['phone'] ?? null,
            'dial_code' => $request['phone']['dialCode'],
            'country_code' => $request['phone']['countryCode'],
        ];

        if ($request['id']) {
            $business->update($businessData);
        } else {
            $business = Businesses::create($businessData);
        }

        if ($request['image']) {
            $this->uploadImage($request['image'], $business);
        }

        return response(
            array(
                "r" => true,
                "type" => "success",
                "title" => "",
                "m" => $request['id'] ? __('messages.business_updated_successfully') : __('messages.business_created_successfully'),
                "data" => null
            )
        );

        return $request;
    }

    private function uploadImage($image, $business)
    {
        $filename = $this->generatepin() . '.jpg';

        if ($business->image) {
            Storage::disk('s3')->delete(config('s3.business') . $business->image);
        }
        $business->image = $filename;
        $business->update();

        list($baseType, $image) = explode(';', $image);
        list(, $image) = explode(',', $image);
        $image = base64_decode($image);

        // Subir archivo a AWS S3
        Storage::disk('s3')->put(config('s3.business') . $filename, $image, 'public');
        return array('status' => true, 'filename' => $filename);
    }

    // Genera Pin aleatorio
    public function generatepin()
    {
        $date = Carbon::now();
        $pin = $date->getTimestamp() . rand(10, 99);
        return $pin;
    }

    public function getBusinesses(Request $request)
    {
        $query = Businesses::with('address', 'address.city', 'address.city.state', 'address.city.state.country')->with('rating')->orderBy('score', 'DESC')->where('businesses.active', 1);

        if ($request["offset"]) {
            $query->offset(intval($request["offset"]));
        }

        if ($request["take"]) {
            $query->take(intval($request["take"]));
        }

        if ($request['id']) {
            $query->where('businesses.id', $request['id']);
        }

        if ($request['user']) {
            $query->where('businesses.user_id', $request['user']);
        }

        if ($request['category']) {
            $query->where('businesses.category_id', $request['category']);
            $query->where('businesses.approved', 1);
        }

        if ($request['search']) {
            $query->where('businesses.name', 'like', '%' . $request["search"] . '%');
            $query->leftJoin('addresses', 'addresses.id', '=', 'businesses.address_id')
                ->orWhere('addresses.district', 'like', '%' . $request["search"] . '%');
        }

        $data = $query->orderBy('businesses.image', 'DESC')->get();
        foreach ($data as $item) {
            $item->ratingScore = $item->getAverageRatingAttribute();
        }
        
        return $data;
    }

    public function delete(Request $request)
    {
        Businesses::where('id', $request->businessId)->forceDelete();

        return response(
            array(
                "r" => true,
                "type" => "success",
                "title" => "",
                "m" => __('messages.business_deleted_successfully'),
                "data" => null
            )
        );
    }
}